最新资讯

  • 量化小白也能自动化挖掘出6万+因子

量化小白也能自动化挖掘出6万+因子

2025-04-28 12:37:40 0 阅读

最近逛某乎,碰到了这个问题:如何看待量化交易WorldQuant世坤大赛北大牛人提交了6万+因子?

我的第一直觉,这肯定不是纯手工挖出来的,6w个因子,一天挖一个,节假日都不休息的话,需要164年,一个小时挖一个的话,也需要7年,一分钟一个,需要42天。

这明显不是一个纯人工手工的速度,麒麟臂也不行,肯定是有机器参与了,除非这个北大学子也是个少爷,雇了100来人,每个人搞来几百个因子就行了。

如果可以用机器,只注重因子数量的话,短时间内挖6w+因子也不是什么难事,量化小白也可以做到,本来这方法是我之前给PM支招对付恶毒私募那种3周要挖4000因子的要求,核心代码只有4行,虽然因子质量不一定能保证,但因子数量绝对是足斤足两的,我刚才试了一下,挖6w+因子,一共花了不到3个小时。

不藏着掖着,这个牛掰的量化因子自动挖掘神器就是tsfresh,只要你基础因子和电脑配置足够,真的是想挖多少就挖多少。

tsfresh实际上是一个python库,在电脑终端使用“pip install tsfresh”就可以自动安装,它最主要的功能就是能对证券价格这类型的时间序列数据自动挖掘其中的特征,并且还可以对有效特征进行筛选,详细说明请见官网:https://tsfresh.com/。

特征(feature)一般是在人工智能/机器学习/深度学习领域的叫法,在量化交易/量化投资领域一般叫因子(factor),例如相对强弱指标RSI在机器学习领域就叫RSI特征,在量化选股领域就叫RSI因子,其实都是一样的东西,大伙儿注意分辨语境就好了。

废话不多说,咱可以先来快速体验一下挖6w+因子,详细原理下文再细说,在成功安装tsfresh库后,只需要以下4行核心代码(第5~8行),便可以将原有的84个基础因子,扩展到65772个因子,耗时9730秒,约2.7小时。

import datetime
start_time = datetime.datetime.now() #开始时间

# 核心代码部分
from tsfresh import extract_features
from tsfresh.utilities.dataframe_functions import roll_time_series
data_roll = roll_time_series(data, column_id='code', column_sort='date', max_timeshift=20, min_timeshift=5).drop(columns=['code'])
data_feat = extract_features(data_roll, column_id='id', column_sort='date') 

end_time = datetime.datetime.now() #结束时间
print('开始时间:', start_time.strftime('%Y-%m-%d %H:%M:%S'))
print('结束时间:', end_time.strftime('%Y-%m-%d %H:%M:%S'))
print('耗时:%d 秒' %(end_time-start_time).seconds)
print('原始数据维度:', data.shape)
print('特征提取后维度:', data_feat.shape)

输出结果:

开始时间: 2024-07-30 23:10:01
结束时间: 2024-07-31 01:52:11
耗时:9730 秒
原始数据维度: (4651, 86)
特征提取后维度: (4646, 65772)

补充说明一下,其中输入数据data是预先生成的数据(下文会说明获取方式),第1列是日期(date),第2列是证券代码(code),之后的84列都是因子列;特征提取之后行数少了5行,是因为设置了前面至少要有5行数据才开始提取当日特征;耗时大小跟电脑配置有关,本次试验所用的电脑处理器是第12代i7(主频2.10 GHz),电脑内存大小是32G。

咱不能是为了提取因子而提取因子,必定是用来做些什么的吧,那咱就可以沿着之前机器学习指数量化择时的策略思路,构建一个因子增强版的策略,整体策略思路详见之前的文章《手把手教你,利用机器学习模型,构建量化择时策略》。

整个建模流程分为收集数据、准备数据、选择/建立模型、训练模型、测试模型和调节参数这6大步骤,这次咱主要是利用tsfresh库生成更多的有效因子进行建模,因此只需改变收集数据和准备数据这2个步骤,后面4个步骤与之前的文章基本一致,无须大变。

由于一次性同时挖掘6w+因子耗时就不说了,还非常吃内存,我自己这台32G内存的老机子都差点儿扛不下来,因此为了照顾到更多的小伙伴能跑通程序,建模的时候使用的是8k+因子,但同时也会说明如何升级到6w+因子。

Step1:收集数据

现在开始第1个步骤,咱就来获取沪深300指数从2005年4月8日上市以来至今的全部行情数据,这里使用的是股票量化开源库qstock,“pip install qstock”安装后,基本的功能无需注册便可以使用,对萌新来说非常方便,详情请见:https://github.com/tkfy920/qstock

import qstock as qs

# 获取沪深300指数高开低收、成交量、成交金额、换手率数据,index是日期
data = qs.get_data(code_list=['HS300'], start='20050408', end='20240730', freq='d')
# 删除名称列、排序并去除空值
data = data.drop(columns=['name']).sort_index().fillna(method='ffill').dropna()
# 插入日期列
data.insert(0, 'date', data.index)
# 将日期从datetime格式转换为str格式
data['date'] = data['date'].apply(lambda x: x.strftime('%Y-%m-%d'))
data = data.reset_index(drop=True)

print(data.shape)
data.tail(10)

这里使用qstock获取数据只是举例,大家使用相同功能的库或API都可以,要注意的是不要带名称列,而且日期列是str格式,不是datetime格式。

Step2:准备数据(本期重点)

第2个步骤就是准备数据,生成/选取哪些特征/因子作为将来SVM模型的输入,在这里咱额外计算的因子是价格斜率(slope)、相对强弱指标(rsi)、威廉指标值(wr)、MACD快线(dif)、MACD慢线(dea)、MACD柱(macd)和抛物线指标(sar)这7个因子,再加上之前的收盘价、成交量、成交金额和换手率,一共是11个因子。

import talib

# 收盘价的斜率
data['slope'] = talib.LINEARREG_SLOPE(data['close'].values, timeperiod=5)
# 相对强弱指标
data['rsi'] = talib.RSI(data['close'].values, timeperiod = 14)
# 威廉指标值
data['wr'] = talib.WILLR(data['high'].values, data['low'].values, data['close'].values, timeperiod=7)
# MACD中的DIF、DEA和MACD柱
data['dif'], data['dea'], data['macd'] = talib.MACD(data['close'].values, fastperiod=12, slowperiod=26, signalperiod=9)
# 抛物线指标
data['sar'] = talib.SAR(data['high'].values, data['low'].values)
# 删除开盘价、最高价和最低价
data = data.drop(columns=['open','high','low']).fillna(method='ffill').dropna().reset_index(drop=True)

print(data.shape)
data.tail(10)

注意这里的行数比之前的少了33(4694->4661),那是因为在计算MACD指标时,底层需要计算EMA26并且在这基础上还要计算EMA9,期初的数据由于长度不足,指标是空值被剔除了,(26-1)+(9-1)=33,下面出现行数减少的原因也是同样的原理,不再赘述。

重点来了,在这里咱要基于这11个基础因子,生成8k+个因子,这里就要先说明一下tsfresh的提取特征原理了。

tsfresh是对序列数据提取特征,输入一个时间序列数据就会转换为一个数值,例如输入一段时间的股价序列,那么可以转化成最大值、最小值、平均值、中位数、波峰数这样的标量数值。

如果不做特殊处理,直接把沪深300因子数据输入进去,那么它只会把每个因子序列数据转化为单个值,这样一个4661x13的因子矩阵,最终就会变为1x13的因子向量,相当于只是一个样本,这样是无法建模的。

咱需要的是每个交易日都要有一个样本,这就需要用到tsfresh的滚动(roll)技术了,请看下面的变换。

from tsfresh.utilities.dataframe_functions import roll_time_series

data_roll = roll_time_series(data, column_id='code', column_sort='date', max_timeshift=20, min_timeshift=5).drop(columns=['code'])

print(data_roll.shape)
data_roll.head(15)

在这个变换中,新生成了一个id列,数值是一个元组,元素1是证券代码,元素2是日期,红框中id日期表明,2005-06-08的因子计算需要用到2005-06-01、2005-06-02、2005-06-03、2005-06-06、2005-06-07和2005-06-08这6个数值组成的时间序列数据,用多长的序列数据,由参数max_timeshift和min_timeshift决定。

max_timeshift=n表示每个交易日最多使用包含当日在内的n+1个数据点序列,min_timeshift=m表示每个交易日至少使用包含当日在内的m+1个数据点序列,这也就说明了数据id为什么从2005-06-08开始,因为之前至少需要5个数据点,再给大伙儿换一种方式展示就清楚更多了,如下。

gg = data_roll.groupby('id').agg({'date':['count', min, max]})

print(gg.shape)
gg.head(20)

看到这里就应该明白了,数据长度在min_timeshift+1 ~ max_timeshift+1之间时,有多少数据用多少数据,当超出这个范围后,就每个交易日滚动(roll)使用max_timeshift+1个数据点的序列数据,因此原始因子数量不变,但行数被扩展为9万多行,因为部分数据被重复滚动使用。

在data_roll之上,就可以使用tsfresh的extract_features函数在基础因子之上衍生出众多因子,这一步较为耗时,不同电脑配置执行时间不一样,须耐心等待。

from tsfresh import extract_features

data_feat = extract_features(data_roll, column_id='id', column_sort='date')
# 对单独标的而言,将日期作为index
data_feat.index = [v[1] for v in data_feat.index] 

print(data_feat.shape)

输出结果:

Feature Extraction: 100%|██████████████████████████████████████████████████████████████| 50/50 [14:50<00:00, 17.81s/it]
(4656, 8613)

从结果中看出,最终得到了4656x8613的因子矩阵,4656对应着交易日数,8613对应着在11个基础因子之上衍生出来的因子数。

因子生成的原理是,tsfresh预置了783个算子(calculator),会逐个用在每一个交易日的基础因子数值序列上,这就相当于孙悟空拔一根猴毛下来,能变出783个形态各异的化身,相同计算公式不同单参数也算1个,11乘以783就是8613,具体的算子计算公式请见官方文档:

https://tsfresh.readthedocs.io/en/latest/text/list_of_features.html

看到这里,挖出6w+因子的原理就很明显了,60000 / 783 ≈ 77,只需要有77个基础因子,就能衍生出6w个因子,只需要将之前生成11个基础因子的部分,替换为以下代码,就可以生成84个基础因子,能衍生出65772个因子,开头2.7小时挖6w+因子的试验就是用这个方法。

import talib

for period in range(5,15):
    # 收盘价的斜率
    data[f'slope{period}'] = talib.LINEARREG_SLOPE(data['close'].values, timeperiod=period)
    # 相对强弱指标
    data[f'rsi{period}'] = talib.RSI(data['close'].values, timeperiod=period)
    # 威廉指标值
    data[f'wr{period}'] = talib.WILLR(data['high'].values, data['low'].values, data['close'].values, timeperiod=period)
    # 均幅指标
    data[f'atr{period}'] = talib.ATR(data['high'].values, data['low'].values, data['close'].values, timeperiod=period)
    # 平均趋向指标
    data[f'adx{period}']  = talib.ADX(data['high'].values, data['low'].values, data['close'].values, timeperiod=period)
for fperiod,speriod,mperiod in zip(range(8,18),range(22,32),range(5,15)):
    # MACD中的DIF、DEA和MACD柱
    data[f'dif{fperiod}'], data[f'dea{fperiod}'], data[f'macd{fperiod}'] = talib.MACD(data['close'].values, fastperiod=fperiod, slowperiod=speriod, signalperiod=mperiod)

# 删除开盘价、最高价和最低价
data = data.drop(columns=['open','high','low']).fillna(method='ffill').dropna().reset_index(drop=True)

print(data.shape)
data.tail(10)

大致的原理是,使用价格斜率(slope)、相对强弱指标(rsi)、威廉指标值(wr)、均幅指标(atr)、平均趋向指标(adx)、MACD快线(dif)、MACD慢线(dea)和MACD柱(macd)这8个指标,每个指标都分别使用10个不同的参数,那就是80个不同的因子,再加上之前的收盘价、成交量、成交金额和换手率,一共是84个因子。这是一种偷懒的写法,大伙儿别学我,根据自己的实际需要加入基础因子哈

说回正题,这8613维里面都是衍生出来的因子,是不包含原始的基础因子的,记得也把基础因子添加回去。跟以前的做法一样,也要给每个交易日的数据打上标签,每个样本标签对应的是第二个交易日的涨跌情况,计算出每个样本第二天的涨幅(pct),如果第二天上涨,则设置标签(rise)为1,反之为0。

import pandas as pd

# 将原始因子加入因子矩阵当中
data_feat = pd.merge(data_feat, data.set_index('date', drop=True).drop(columns=['code']), 
                     how='left', left_index=True, right_index=True)

# 给数据打标签
data_feat['pct'] = data_feat['close'].shift(-1) / data_feat['close'] - 1.0
data_feat['rise'] = data_feat['pct'].apply(lambda x: 1 if x>0 else 0)
data_feat = data_feat.dropna(subset=['pct'])

print(data_feat.shape)

Step3:选择/建立模型

还是跟之前一样,使用SVM模型,原因和原理不再赘述,详见之前的文章《手把手教你,利用机器学习模型,构建量化择时策略》,为了方(tou)便(lan)实现和建立模型,咱还是直接从Scikit-learn(简称sklearn)中导入,它是非常流行的Python免费机器学习库,具有各种分类、回归和聚类算法,一般配合numpy数据格式使用。

Step4:训练模型

在这里,咱需要把整个数据集分拆为训练集和测试集,因为除了训练模型之外,咱还要留出一部分数据来验证训练出来模型的优劣。

一般来说,将完整数据集80%的样本作为训练集,剩余20%的样本作为测试集,要注意的是,在这里使用tsfresh的select_features函数对之前的8000+因子进行有效因子筛选,最终有效入选因子有200多个,这个只能在训练集上操作,不能在全部数据集上操作,否则就会变相引入“未来函数”。

from tsfresh import select_features

# 划分训练集和测试集
num_train = round(len(data_feat)*0.8)
data_train = data_feat.iloc[:num_train, :]
y_train = data_feat.iloc[:num_train, :]['rise']
data_test = data_feat.iloc[num_train:, :]
y_test = data_feat.iloc[num_train:, :]['rise']

# 特征选择
data_train0 = select_features(data_train.drop(columns=['pct','rise']).dropna(axis=1, how='any'), y_train)
select_columns = list(data_train0.columns) + ['pct','rise']
data_train = data_train[select_columns]
data_test = data_test[select_columns]

print(data_train.shape)

输出结果:

(3724, 242)

接下来,按照老方法将因子数据标准化后,用于模型训练,从sklearn的svm模块当中导入SVM分类器SVC,创建实例对象后,将训练集因子数据和对应标签塞进fit函数就行了,SVM模型的惩罚系数使用默认值1.0,核函数也用默认的RBF核函数。

from sklearn.svm import SVC
from sklearn.preprocessing import StandardScaler

# 转化为numpy的ndarray数组格式
X_train = data_train.drop(columns=['pct','rise']).values
X_test = data_test.drop(columns=['pct','rise']).values

# 对数据进行标准化
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

# 训练模型
classifier = SVC(C=1.0, kernel='rbf')
classifier.fit(X_train, y_train)

Step5:测试模型

至此,SVM分类器已经训练好了,把因子数据塞进predict函数,就能输出每个样本的预测值,咱分别把训练集和测试集的预测标签插回到原来的数据集当中,用来计算预测的准确率。

y_train_pred = classifier.predict(X_train)
y_test_pred = classifier.predict(X_test)
data_train['pred'] = y_train_pred
data_test['pred'] = y_test_pred
accuracy_train = 100 * data_train[data_train.rise==data_train.pred].shape[0] / data_train.shape[0]
accuracy_test = 100 * data_test[data_test.rise==data_test.pred].shape[0] / data_test.shape[0]
print('训练集预测准确率:%.2f%%' %accuracy_train)
print('测试集预测准确率:%.2f%%' %accuracy_test)

输出结果:

训练集预测准确率:65.01%
测试集预测准确率:52.42%

光看准确率还是不够直观,咱还要看一下如果纯粹按照这个择时模型的预测结果进行投资,能获得多少收益。假设指数可以多空交易,如果模型预测为1(上涨),第二天策略的收益率就是指数的涨幅,如果模型预测为0(下跌),第二天策略的收益率就是指数的涨幅的相反数,有了每天的日收益率之后,通过dataframe自带的累乘函数cumprod,就可以得到择时策略和沪深300指数的净值曲线,为了方(tou)便(lan)起见,不考虑交易费率,以及按照收盘价成交。

import matplotlib.pyplot as plt

#策略日收益率
data_test['strategy_pct'] = data_test.apply(lambda x: x.pct if x.pred>0 else -x.pct, axis=1)

#策略和沪深300的净值
data_test['strategy'] = (1.0 + data_test['strategy_pct']).cumprod()
data_test['hs300'] = (1.0 + data_test['pct']).cumprod()

# 粗略计算年化收益率
annual_return = 100 * (pow(data_test['strategy'].iloc[-1], 250/data_test.shape[0]) - 1.0)
print('SVM 沪深300指数择时策略的年化收益率:%.2f%%' %annual_return)

#将索引从字符串转换为日期格式,方便展示
data_test.index = pd.to_datetime(data_test.index)
ax = data_test[['strategy','hs300']].plot(figsize=(16,9), color=['SteelBlue','Red'],
                                          title='SVM 沪深300指数择时策略净值  by 公众号【量化君也】')
plt.show()

Step6:调节参数

如果你觉得预测准确率和策略收益还达不到预期,可以对每一个步骤的参数进行调整改进。

就好比这次建模,跟原始版SVM择时模型比起来,最大的不同点就是使用了不同的基础因子,还在基础因子上提取了众多的衍生因子,并且进行了有效因子筛选,训练集预测准确率从之前的57.23%提升到了65.01%,测试集预测准确率从48.34%提升到了52.42%,策略年化收益也从-5.98%提高到了18.34%。

原始版SVM择时模型测试集的策略净值

这就是改进了“因子参数”的结果,你还可以调整SVM模型参数、因子标准化方法、因子中性化/正交化方法等等。

~~~~~~建模结束分割线~~~~~~

荀子的《劝学》中有云:君子性非异也,善假于物也。有些事情看上去很牛掰,也许只是善于利用工具的缘故罢了,你会用了,你也可以很牛掰,10w+因子都不在话下。

本文地址:https://www.vps345.com/4631.html

搜索文章

Tags

PV计算 带宽计算 流量带宽 服务器带宽 上行带宽 上行速率 什么是上行带宽? CC攻击 攻击怎么办 流量攻击 DDOS攻击 服务器被攻击怎么办 源IP 服务器 linux 运维 游戏 云计算 javascript 前端 chrome edge deepseek Ollama 模型联网 API CherryStudio 进程 操作系统 进程控制 Ubuntu python MCP ssh llama 算法 opencv 自然语言处理 神经网络 语言模型 ubuntu 数据库 centos oracle 关系型 安全 分布式 rust http java 网络 开发语言 numpy adb nginx 监控 自动化运维 阿里云 网络安全 网络协议 django fastapi flask web3.py flutter Dell R750XS react.js 前端面试题 node.js 持续部署 harmonyos 华为 typescript 计算机网络 科技 ai 人工智能 个人开发 mcp mcp-proxy mcp-inspector fastapi-mcp agent sse macos 笔记 C 环境变量 进程地址空间 c++ 多线程服务器 Linux网络编程 windows 搜索引擎 android spring pycharm 深度学习 conda pillow github 创意 社区 kubernetes 容器 学习方法 经验分享 程序人生 matlab docker DeepSeek-R1 API接口 c语言 Flask FastAPI Waitress Gunicorn uWSGI Uvicorn Hyper-V WinRM TrustedHosts RTSP xop RTP RTSPServer 推流 视频 kvm 无桌面 命令行 ansible playbook golang 后端 YOLOv8 NPU Atlas800 A300I pro asi_bench mount挂载磁盘 wrong fs type LVM挂载磁盘 Centos7.9 ecm bpm tcp/ip 面试 性能优化 jdk intellij-idea 架构 Deepseek unity c# udp 自动化 蓝耘科技 元生代平台工作流 ComfyUI chatgpt 大模型 llama3 Chatglm 开源大模型 IIS .net core Hosting Bundle .NET Framework vs2022 es jvm php html 深度优先 图论 并集查找 换根法 树上倍增 sql KingBase ddos ollama llm 机器学习 zotero WebDAV 同步失败 代理模式 串口服务器 YOLO pytorch vue.js audio vue音乐播放器 vue播放音频文件 Audio音频播放器自定义样式 播放暂停进度条音量调节快进快退 自定义audio覆盖默认样式 spring boot websocket nuxt3 vue3 银河麒麟 kylin v10 麒麟 v10 ESP32 LDAP tomcat ide 实时音视频 filezilla 无法连接服务器 连接被服务器拒绝 vsftpd 331/530 Docker Compose docker compose docker-compose 统信 国产操作系统 虚拟机安装 .net json html5 firefox gitlab https AIGC oneapi 大模型微调 open webui 学习 URL MQTT 消息队列 远程工作 Linux PID mysql 博客 qt maven ux 多线程 mysql离线安装 ubuntu22.04 mysql8.0 云原生 k8s 报错 爬虫 单片机 Headless Linux opensearch helm 僵尸进程 spring cloud 远程登录 telnet pdf MI300x DeepSeek 华为认证 网络工程师 交换机 开源 vscode sysctl.conf vm.nr_hugepages live555 rtsp rtp shell visualstudio Python 网络编程 聊天服务器 套接字 TCP 客户端 Socket JAVA Java jenkins svn flash-attention kylin 大数据 v10 镜像源 软件 armbian u-boot 缓存 elasticsearch 嵌入式硬件 驱动开发 硬件工程 嵌入式实习 能力提升 面试宝典 技术 IT信息化 Samba SWAT 配置文件 服务管理 网络共享 WSL win11 无法解析服务器的名称或地址 流式接口 AI Agent ftp 高效日志打印 串口通信日志 服务器日志 系统状态监控日志 异常记录日志 AI编程 stm32 EasyConnect Cline 企业微信 Linux24.04 deepin ecmascript nextjs react reactjs 银河麒麟操作系统 国产化 运维开发 web安全 ssrf 失效的访问控制 物联网 HTML audio 控件组件 vue3 audio音乐播放器 Audio标签自定义样式默认 vue3播放音频文件音效音乐 自定义audio播放器样式 播放暂停调整声音大小下载文件 eureka openwrt LLM Web APP Streamlit .netcore hadoop 小程序 apache clickhouse Linux xrdp 远程桌面 远程连接 Reactor 设计模式 C++ string模拟实现 深拷贝 浅拷贝 经典的string类问题 三个swap 游戏服务器 TrinityCore 魔兽世界 开发环境 SSL证书 redis 向日葵 联想开天P90Z装win10 DigitalOcean GPU服务器购买 GPU服务器哪里有 GPU服务器 chfs ubuntu 16.04 odoo 服务器动作 Server action 统信UOS 麒麟 bonding 链路聚合 mongodb 源码剖析 rtsp实现步骤 流媒体开发 tailscale derp derper 中转 C++软件实战问题排查经验分享 0xfeeefeee 0xcdcdcdcd 动态库加载失败 程序启动失败 程序运行权限 标准用户权限与管理员权限 ssl 电脑 机器人 prometheus rpc 远程过程调用 Windows环境 直播推流 腾讯云 rsyslog Minecraft 智能路由器 FTP服务器 媒体 微信公众平台 中间件 C语言 ipython 低代码 服务器繁忙 华为云 jmeter 软件测试 gitee go microsoft jar FunASR ASR 权限 佛山戴尔服务器维修 佛山三水服务器维修 ollama下载加速 压力测试 课程设计 cursor MCP server C/S LLM windows日志 安全架构 Dify agi 计算机视觉 医疗APP开发 app开发 uni-app gpu算力 负载均衡 unix LORA 大语言模型 NLP H3C iDRAC R720xd 命名管道 客户端与服务端通信 springsecurity6 oauth2 授权服务器 前后端分离 硬件架构 系统架构 备份SQL Server数据库 数据库备份 傲梅企业备份网络版 服务器无法访问 ip地址无法访问 无法访问宝塔面板 宝塔面板打不开 XFS xfs文件系统损坏 I_O error 目标检测 集成学习 集成测试 xss openEuler hugo arm android studio 交互 file server http server web server gaussdb Docker Hub docker pull daemon.json 代码调试 ipdb rdp 实验 minio Spring Security 思科模拟器 思科 Cisco UOS 统信操作系统 yum oceanbase rc.local 开机自启 systemd 1024程序员节 ISO镜像作为本地源 fpga开发 muduo X11 Xming 游戏程序 弹性计算 虚拟化 KVM 计算虚拟化 弹性裸金属 MNN Qwen pppoe radius bash arm开发 ruoyi 数据集 ios DeepSeek行业应用 Heroku 网站部署 宝塔面板访问不了 宝塔面板网站访问不了 宝塔面板怎么配置网站能访问 宝塔面板配置ip访问 宝塔面板配置域名访问教程 宝塔面板配置教程 jupyter pip next.js 部署 部署next.js 内存 ocr AI agent java-ee kind SSH 备选 网站 api 调用 示例 IDEA postman mock mock server 模拟服务器 mock服务器 Postman内置变量 Postman随机数据 googlecloud EMQX 通信协议 idm IIS服务器 IIS性能 日志监控 编辑器 vscode 1.86 华为od sqlite TCP服务器 qt项目 qt项目实战 qt教程 excel 模拟退火算法 漏洞 国标28181 视频监控 监控接入 语音广播 流程 SIP SDP mosquitto 宝塔面板 同步 备份 建站 GaN HEMT 氮化镓 单粒子烧毁 辐射损伤 辐照效应 安全威胁分析 r语言 数据挖掘 数据可视化 数据分析 安装教程 GPU环境配置 Ubuntu22 CUDA PyTorch Anaconda安装 Xterminal 豆瓣 追剧助手 迅雷 nas 微信 unity3d virtualenv debian aws 银河麒麟桌面操作系统 Kylin OS webrtc AD域 intellij idea av1 电视盒子 机顶盒ROM 魔百盒刷机 3d 数学建模 网络结构图 监控k8s集群 集群内prometheus Nuxt.js git express AutoDL openssl 密码学 tcp 外网访问 内网穿透 端口映射 big data word图片自动上传 word一键转存 复制word图片 复制word图文 复制word公式 粘贴word图文 粘贴word公式 dubbo vim kafka hibernate 5G 3GPP 卫星通信 kamailio sip VoIP 根服务器 transformer TRAE uniapp ffmpeg 音视频 Cursor AI大模型 大模型入门 大模型教程 remote-ssh asp.net大文件上传 asp.net大文件上传下载 asp.net大文件上传源码 ASP.NET断点续传 asp.net上传文件夹 asp.net上传大文件 .net core断点续传 重启 排查 系统重启 日志 原因 sqlserver ukui 麒麟kylinos openeuler 微服务 系统安全 其他 zookeeper springboot 温湿度数据上传到服务器 Arduino HTTP 需求分析 规格说明书 ci/cd okhttp CORS 跨域 雨云 NPS 孤岛惊魂4 pygame 小游戏 五子棋 恒源云 RTMP 应用层 opcua opcda KEPServer安装 alias unalias 别名 腾讯云大模型知识引擎 P2P HDLC 工业4.0 k8s资源监控 annotations自动化 自动化监控 监控service 监控jvm 信息与通信 IMM cuda cudnn nvidia QT 5.12.12 QT开发环境 Ubuntu18.04 prometheus数据采集 prometheus数据模型 prometheus特点 双系统 GRUB引导 Linux技巧 rtsp服务器 rtsp server android rtsp服务 安卓rtsp服务器 移动端rtsp服务 大牛直播SDK 项目部署到linux服务器 项目部署过程 docker搭建nacos详解 docker部署nacos docker安装nacos 腾讯云搭建nacos centos7搭建nacos 相机 web 传统数据库升级 银行 LLMs springboot远程调试 java项目远程debug docker远程debug java项目远程调试 springboot远程 单一职责原则 软件工程 frp hexo 移动云 可信计算技术 小智AI服务端 xiaozhi TTS FTP 服务器 RAID RAID技术 磁盘 存储 源码 毕业设计 迁移指南 图像处理 can 线程池 鸿蒙 混合开发 环境安装 JDK cpp-httplib 技能大赛 计算机外设 微信开放平台 微信公众号配置 gitea 游戏开发 基础入门 编程 ssh远程登录 自定义客户端 SAS dify hive Hive环境搭建 hive3环境 Hive远程模式 elk 僵尸世界大战 游戏服务器搭建 多进程 远程 命令 执行 sshpass 操作 webgl linux上传下载 鲲鹏 昇腾 npu 鸿蒙系统 健康医疗 互联网医院 wps 安卓 centos-root /dev/mapper yum clean all df -h / du -sh 考研 数据结构 ui SSL 域名 onlyoffice 在线office NFS redhat vmware 卡死 HarmonyOS Next ldap 毕昇JDK chrome 浏览器下载 chrome 下载安装 mac 谷歌浏览器下载 群晖 文件分享 iis webstorm Trae IDE AI 原生集成开发环境 Trae AI 雨云服务器 浏览器开发 AI浏览器 npm linux安装配置 token sas mcu 服务器管理 配置教程 服务器安装 网站管理 崖山数据库 YashanDB rabbitmq rnn visual studio code 本地部署 MySql pyqt 微信小程序域名配置 微信小程序服务器域名 微信小程序合法域名 小程序配置业务域名 微信小程序需要域名吗 微信小程序添加域名 AI代码编辑器 HarmonyOS 半虚拟化 硬件虚拟化 Hypervisor etl etcd 数据安全 RBAC wireshark 测试工具 嵌入式 linux驱动开发 Kali Linux 黑客 渗透测试 信息收集 epoll h.264 micropython esp32 mqtt 远程控制 远程看看 远程协助 seatunnel RustDesk自建服务器 rustdesk服务器 docker rustdesk yaml Ultralytics 可视化 黑客技术 Ubuntu Server Ubuntu 22.04.5 ue4 着色器 ue5 虚幻 网工 移动魔百盒 postgresql pgpool USB转串口 CH340 开机自启动 飞牛NAS 飞牛OS MacBook Pro 三级等保 服务器审计日志备份 rag ragflow ragflow 源码启动 harmonyOS面试题 grafana vscode1.86 1.86版本 ssh远程连接 田俊楠 SSE rocketmq 邮件APP 免费软件 open Euler dde 网卡的名称修改 eth0 ens33 bug outlook rclone AList webdav fnOS jina anaconda mamba Vmamba 视觉检测 adobe Docker引擎已经停止 Docker无法使用 WSL进度一直是0 镜像加速地址 W5500 OLED u8g2 deepseek r1 matplotlib 环境迁移 lio-sam SLAM IMX317 MIPI H265 VCU composer glibc 视频编解码 CPU 主板 电源 网卡 大文件分片上传断点续传及进度条 如何批量上传超大文件并显示进度 axios大文件切片上传详细教 node服务器合并切片 vue3大文件上传报错提示错误 大文件秒传跨域报错cors Ubuntu 24.04.1 轻量级服务器 产测工具框架 IMX6ULL 管理框架 python3.11 dash 正则表达式 ip 链表 Linux的基础指令 iphone 游戏引擎 Unity Dedicated Server Host Client 无头主机 devops Logstash 日志采集 相差8小时 UTC 时间 rustdesk iftop 网络流量监控 safari Mac 系统 前端框架 HiCar CarLife+ CarPlay QT RK3588 yolov8 历史版本 下载 安装 make命令 makefile文件 Node-Red 编程工具 流编程 知识图谱 网络穿透 云服务器 cpu 实时 使用 毕设 DOIT 四博智联 thingsboard 端口测试 程序 性能分析 bat 端口 查看 ss uv OD机试真题 华为OD机试真题 服务器能耗统计 firewalld 镜像 dns linux 命令 sed 命令 无人机 ROS 自动驾驶 css 策略模式 单例模式 智能音箱 智能家居 微信小程序 服务器数据恢复 数据恢复 存储数据恢复 北亚数据恢复 oracle数据恢复 ESXi 多个客户端访问 IO多路复用 回显服务器 TCP相关API 实时互动 bootstrap navicat 文件系统 路径解析 软考 fd 文件描述符 MacOS录屏软件 网络攻击模型 矩阵 线性代数 电商平台 XCC Lenovo Jellyfin 压测 ECS 繁忙 解决办法 替代网站 汇总推荐 AI推理 n8n 工作流 workflow list 模拟实现 CDN less gateway Clion Nova ResharperC++引擎 Centos7 远程开发 dba prompt easyui langchain DevEco Studio 信号处理 flink 代理 skynet 超融合 Windows Qwen2.5-coder 离线部署 yum源切换 更换国内yum源 防火墙 NAT转发 NAT Server stm32项目 cocoapods xcode embedding wsl threejs 3D IPv4 子网掩码 公网IP 私有IP SSH 密钥生成 SSH 公钥 私钥 生成 串口驱动 CH341 uart 485 Linux find grep SenseVoice wsgiref Web 服务器网关接口 模拟器 教程 BMC IPMI 带外管理 职场和发展 SSH 服务 SSH Server OpenSSH Server 常用命令 文本命令 目录命令 ShenTong c 计算机 ardunio BLE bcompare Beyond Compare iperf3 带宽测试 Erlang OTP gen_server 热代码交换 事务语义 dell服务器 iventoy VmWare OpenEuler css3 线程 磁盘监控 iot 智能手机 EMUI 回退 降级 升级 zabbix 服务器配置 生物信息学 freebsd 服务器主板 AI芯片 测试用例 功能测试 apt Invalid Host allowedHosts vue 我的世界服务器搭建 AI写作 AI作画 中兴光猫 换光猫 网络桥接 自己换光猫 asm QQ 聊天室 AI-native Docker Desktop 王者荣耀 Wi-Fi ArkUI 多端开发 智慧分发 应用生态 鸿蒙OS IM即时通讯 剪切板对通 HTML FORMAT 我的世界 我的世界联机 数码 办公自动化 自动化生成 pdf教程 jetty undertow 算力 tidb GLIBC 单元测试 selenium 虚拟机 springcloud 云服务 云电竞 云电脑 todesk 软链接 硬链接 db 硬件 设备 GPU PCI-Express WebUI DeepSeek V3 sqlite3 软件需求 gcc g++ g++13 cnn DenseNet CrewAI ruby log4j 元服务 应用上架 Ubuntu DeepSeek DeepSeek Ubuntu DeepSeek 本地部署 DeepSeek 知识库 DeepSeek 私有化知识库 本地部署 DeepSeek DeepSeek 私有化部署 图形化界面 流水线 脚本式流水线 换源 国内源 Debian efficientVIT YOLOv8替换主干网络 TOLOv8 wsl2 显示管理器 lightdm gdm Linux awk awk函数 awk结构 awk内置变量 awk参数 awk脚本 awk详解 tensorflow Xinference RAGFlow GCC crosstool-ng pyautogui dns是什么 如何设置电脑dns dns应该如何设置 deekseek 知识库 裸金属服务器 弹性裸金属服务器 p2p WSL2 selete 高级IO 多层架构 解耦 架构与原理 VMware安装Ubuntu Ubuntu安装k8s 个人博客 KylinV10 麒麟操作系统 Vmware 致远OA OA服务器 服务器磁盘扩容 分析解读 银河麒麟服务器操作系统 系统激活 k8s集群资源管理 云原生开发 GoogLeNet Typore 微信分享 Image wxopensdk RAGFLOW Netty 即时通信 NIO cd 目录切换 Radius camera Arduino 电子信息 HTTP 服务器控制 ESP32 DeepSeek Ubuntu 24 常用命令 Ubuntu 24 Ubuntu vi 异常处理 aarch64 编译安装 HPC 数据库架构 数据管理 数据治理 数据编织 数据虚拟化 烟花代码 烟花 元旦 语音识别 lsb_release /etc/issue /proc/version uname -r 查看ubuntu版本 windwos防火墙 defender防火墙 win防火墙白名单 防火墙白名单效果 防火墙只允许指定应用上网 防火墙允许指定上网其它禁止 ros2 moveit 机器人运动 高效远程协作 TrustViewer体验 跨设备操作便利 智能远程控制 信号 Open WebUI 阻塞队列 生产者消费者模型 服务器崩坏原因 交叉编译 laravel wordpress 无法访问wordpess后台 打开网站页面错乱 linux宝塔面板 wordpress更换服务器 Linux无人智慧超市 LInux多线程服务器 QT项目 LInux项目 单片机项目 程序员 宠物 免费学习 宠物领养 宠物平台 直流充电桩 充电桩 域名服务 DHCP 符号链接 配置 junit xpath定位元素 小艺 Pura X 自动化测试 性能测试 SEO 业界资讯 dity make 树莓派 VNC gradle Linux环境 强化学习 NAS Termux RoboVLM 通用机器人策略 VLA设计哲学 vlm fot robot 视觉语言动作模型 具身智能 AISphereButler 边缘计算 netty 大数据平台 银河麒麟高级服务器 外接硬盘 Kylin sentinel 游戏机 抗锯齿 Kali 实习 VR手套 数据手套 动捕手套 动捕数据手套 Java Applet URL操作 服务器建立 Socket编程 网络文件读取 状态管理的 UDP 服务器 Arduino RTOS firewall HCIE 数通 输入法 iBMC UltraISO gpt 技术共享 vasp安装 智能硬件 查询数据库服务IP地址 SQL Server 加解密 Yakit yaklang 7z 金仓数据库 2025 征文 数据库平替用金仓 eclipse keepalived Ark-TS语言 code-server sonoma 自动更新 执法记录仪 智能安全帽 smarteye SVN Server tortoise svn SysBench 基准测试 流量运营 MS Materials proxy模式 echarts HAProxy 虚拟局域网 nac 802.1 portal IPMITOOL 硬件管理 信息可视化 网页设计 华为机试 政务 分布式系统 监控运维 Prometheus Grafana chrome devtools chromedriver llama.cpp ros Dell HPE 联想 浪潮 tcpdump 合成模型 扩散模型 图像生成 rust腐蚀 VMware安装mocOS VMware macOS系统安装 序列化反序列化 框架搭建 显卡驱动 UDP的API使用 vSphere vCenter nfs CVE-2024-7347 VPS Anolis nginx安装 linux插件下载 .net mvc断点续传 OpenHarmony 真机调试 实战案例 ceph mariadb 金融 Python基础 Python教程 Python技巧 网络用户购物行为分析可视化平台 大数据毕业设计 图形渲染 飞书 大大通 第三代半导体 碳化硅 黑苹果 深度求索 私域 web3 环境配置 sdkman sequoiaDB Claude autodl 软件定义数据中心 sddc 反向代理 AnythingLLM AnythingLLM安装 捆绑 链接 谷歌浏览器 youtube google gmail 状态模式 LInux 基础环境 开发 ubuntu20.04 开机黑屏 匿名管道 VS Code win服务器架设 windows server 沙盒 word AD 域管理 spark HistoryServer Spark YARN jobhistory 多路转接 网站搭建 serv00 regedit 开机启动 项目部署 grub 版本升级 扩容 wpf WebRTC VSCode 磁盘镜像 服务器镜像 服务器实时复制 实时文件备份 raid5数据恢复 磁盘阵列数据恢复 CentOS Stream CentOS 本地化部署 USB网络共享 京东云 Playwright OpenSSH 私有化 minecraft GIS 遥感 WebGIS ssh漏洞 ssh9.9p2 CVE-2025-23419 玩机技巧 软件分享 软件图标 蓝桥杯 YOLOv12 Cookie 服务器部署ai模型 分布式训练 IO模型 Kylin-Server 内网环境 risc-v Redis Desktop seleium 目标跟踪 OpenVINO 推理应用 swoole DBeaver 数据仓库 kerberos SRS 流媒体 直播 ABAP perf visual studio 上传视频至服务器代码 vue3批量上传多个视频并预览 如何实现将本地视频上传到网页 element plu视频上传 ant design vue vue3本地上传视频及预览移除 宕机切换 服务器宕机 openstack Xen TCP协议 triton 模型分析 存储维护 NetApp存储 EMC存储 系统开发 binder 车载系统 framework 源码环境 软负载 CLion milvus 粘包问题 curl wget AI Agent 字节智能运维 Unity插件 ip命令 新增网卡 新增IP 启动网卡 docker部署翻译组件 docker部署deepl docker搭建deepl java对接deepl 翻译组件使用 西门子PLC 通讯 ubuntu24.04.1 fast 大模型应用 TrueLicense 自动化任务管理 Attention PX4 rpa 离线部署dify 飞牛nas fnos RAG 检索增强生成 文档解析 大模型垂直应用 PVE vr eNSP 企业网络规划 华为eNSP 网络规划 mq x64 SIGSEGV xmm0 Linux的权限 trea idea gnu 语法 李心怡 Google pay Apple pay kali 共享文件夹 嵌入式Linux IPC UDP docker部署Python DNS 热榜 阿里云ECS 服务器时间 键盘 灵办AI VMware创建虚拟机 搭建个人相关服务器 minicom 串口调试工具 音乐服务器 Navidrome 音流 代理服务器 ping++ 影刀 #影刀RPA# edge浏览器 产品经理 MDK 嵌入式开发工具 论文笔记 sublime text arcgis 网络爬虫 嵌入式系统开发 大模型推理 大模型学习 增强现实 沉浸式体验 应用场景 技术实现 案例分析 AR trae 在线预览 xlsx xls文件 在浏览器直接打开解析xls表格 前端实现vue3打开excel 文件地址url或接口文档流二进 运维监控 leetcode 推荐算法 DocFlow conda配置 conda镜像源 ubuntu24 vivado24 figma 远程服务 bot Docker 虚幻引擎 怎么卸载MySQL MySQL怎么卸载干净 MySQL卸载重新安装教程 MySQL5.7卸载 Linux卸载MySQL8.0 如何卸载MySQL教程 MySQL卸载与安装 论文阅读 大模型部署 自动化编程 Deepseek-R1 私有化部署 推理模型 欧标 OCPP 信创 信创终端 中科方德 物联网开发 lua 风扇控制软件 vue-i18n 国际化多语言 vue2中英文切换详细教程 如何动态加载i18n语言包 把语言json放到服务器调用 前端调用api获取语言配置文件 社交电子 Windsurf MacMini 迷你主机 mini Apple 音乐库 飞牛 实用教程 docker run 数据卷挂载 交互模式 deep learning C# MQTTS 双向认证 emqx searxng midjourney 网络药理学 生信 PPI String Cytoscape CytoHubba 本地知识库部署 DeepSeek R1 模型 rime 程序员创富 linux环境变量 nlp 干货分享 黑客工具 密码爆破 mm-wiki搭建 linux搭建mm-wiki mm-wiki搭建与使用 mm-wiki使用 mm-wiki详解 火绒安全 EtherCAT转Modbus ECT转Modbus协议 EtherCAT转485网关 ECT转Modbus串口网关 EtherCAT转485协议 ECT转Modbus网关 xml EtherNet/IP串口网关 EIP转RS485 EIP转Modbus EtherNet/IP网关协议 EIP转RS485网关 EIP串口服务器 xshell termius iterm2 hosts neo4j 数据库开发 database 聚类 mybatis docker命令大全 IO ArcTS 登录 ArcUI GridItem arkUI ai小智 语音助手 ai小智配网 ai小智教程 esp32语音助手 diy语音助手 服务网格 istio js 数据库系统 cmos dock 加速 做raid 装系统 gpt-3 文心一言 AP配网 AK配网 小程序AP配网和AK配网教程 WIFI设备配网小程序UDP开 Ubuntu共享文件夹 共享目录 Linux共享文件夹 内网服务器 内网代理 内网通信 VM搭建win2012 win2012应急响应靶机搭建 攻击者获取服务器权限 上传wakaung病毒 应急响应并溯源 挖矿病毒处置 应急响应综合性靶场 鸿蒙开发 移动开发 人工智能生成内容 拓扑图 剧本 docker搭建pg docker搭建pgsql pg授权 postgresql使用 postgresql搭建 ai工具 java-rocketmq VLAN 企业网络 大模型面经 uni-file-picker 拍摄从相册选择 uni.uploadFile H5上传图片 微信小程序上传图片