当前位置: 首页 > news >正文

阿里巴巴网站制作内网穿透做网站

阿里巴巴网站制作,内网穿透做网站,饰品网站建设规划书,中小型网站建设方案计划让AI帮助编程使用TabPFN模型进行股价推理 原计划提问的prompt 如何通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式 本意是想让AI分步执行,先处理股票数据,然后再进行模型训练,结果豆包超…

计划让AI帮助编程使用TabPFN模型进行股价推理

原计划提问的prompt

如何通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式

本意是想让AI分步执行,先处理股票数据,然后再进行模型训练,结果豆包超长发挥,直接把后面的模型预测部分也写了,导致其它两个模型都需要再附加上模型预测的prompt,

最终除豆包外的prompt

通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务

豆包答题

豆包的总体表现中规中矩,只用一句“数据处理”的prompt,它就完成了整个任务,这是没有预料到的,也就是豆包会抢答了!

但是生成的代码无法一次跑通,大约修改了2-3次,而且有一个地方AI是改不过来的,必须手工改。当然手工改这个地方其它AI也没pass。

豆包的代码

import akshare as ak
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from tabpfn import TabPFNClassifier# 获取股票数据
stock_data = ak.stock_zh_a_hist(symbol="600519", period="daily", start_date="20200101", end_date="20230101",adjust="qfq")# 数据预处理函数
def prepare_data_for_tabpfn(stock_data, days_ahead=3):df = stock_data.copy()# 动态处理列名original_columns = df.columns.tolist()print(f"原始列名: {original_columns}")if len(original_columns) == 12:df.columns = ['日期', '开盘', '收盘', '最高', '最低', '成交量', '成交额', '振幅', '涨跌幅', '涨跌额', '换手率', '未知列']else:df.columns = [f"col_{i}" for i in range(len(original_columns))]print(f"警告: 列数量不匹配,使用默认列名: {df.columns.tolist()}")# 特征工程df['收盘价_滞后1'] = df['收盘'].shift(1)df['收盘价_滞后2'] = df['收盘'].shift(2)df['收盘价_滞后3'] = df['收盘'].shift(3)df['涨跌幅_1'] = df['收盘'].pct_change(1)df['涨跌幅_2'] = df['收盘'].pct_change(2)df['涨跌幅_3'] = df['收盘'].pct_change(3)df['MA5'] = df['收盘'].rolling(window=5).mean()df['MA10'] = df['收盘'].rolling(window=10).mean()df['MA20'] = df['收盘'].rolling(window=20).mean()df['波动率_5'] = df['涨跌幅_1'].rolling(window=5).std()df['波动率_10'] = df['涨跌幅_1'].rolling(window=10).std()df['成交量_变化'] = df['成交量'].pct_change(1)df['成交量_MA5'] = df['成交量'].rolling(window=5).mean()df['未来涨跌'] = np.where(df['收盘'].shift(-days_ahead) > df['收盘'], 1, 0)df = df.dropna()feature_columns = ['收盘价_滞后1', '收盘价_滞后2', '收盘价_滞后3','涨跌幅_1', '涨跌幅_2', '涨跌幅_3','MA5', 'MA10', 'MA20','波动率_5', '波动率_10','成交量_变化', '成交量_MA5']valid_features = [col for col in feature_columns if col in df.columns]if len(valid_features) < len(feature_columns):missing_features = set(feature_columns) - set(valid_features)print(f"警告: 缺少以下特征: {missing_features}")feature_columns = valid_featuresX = df[feature_columns].valuesy = df['未来涨跌'].valuesfeature_names = feature_columnsX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42, shuffle=False)scaler = StandardScaler()X_train = scaler.fit_transform(X_train)X_test = scaler.transform(X_test)return X_train, X_test, y_train, y_test, feature_names# 准备数据
X_train, X_test, y_train, y_test, feature_names = prepare_data_for_tabpfn(stock_data)# 初始化并训练TabPFN模型
model = TabPFNClassifier(device='cpu')
model.fit(X_train, y_train)# 预测(更新的API调用)
y_pred = model.predict(X_test)
y_prob = model.predict_proba(X_test)[:, 1]  # 获取正类(上涨)的概率# 评估模型
accuracy = np.mean(y_pred == y_test)
print(f"模型准确率: {accuracy:.4f}")# 查看前10个预测结果
print("\n前10个预测结果:")
for i in range(10):print(f"样本 {i+1}: 实际={y_test[i]}, 预测={y_pred[i]}, 概率={y_prob[i]:.4f}")

豆包的输出

原始列名: ['日期', '股票代码', '开盘', '收盘', '最高', '最低', '成交量', '成交额', '振幅', '涨跌幅', '涨跌额', '换手率']模型准确率: 0.5915前10个预测结果:
样本 1: 实际=1, 预测=1, 概率=0.6773
样本 2: 实际=0, 预测=0, 概率=0.4536
样本 3: 实际=1, 预测=1, 概率=0.5055
样本 4: 实际=1, 预测=0, 概率=0.4203
样本 5: 实际=1, 预测=1, 概率=0.6198
样本 6: 实际=1, 预测=1, 概率=0.6163
样本 7: 实际=1, 预测=1, 概率=0.5240
样本 8: 实际=1, 预测=1, 概率=0.5556
样本 9: 实际=0, 预测=1, 概率=0.5418
样本 10: 实际=1, 预测=0, 概率=0.4687

跃问表现

只用前面一句prompt不行,它没像豆包那样帮着把推理、预测也做了,所以要加上一句

prompt

通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务

跃问代码

# 安装必要的库(如果尚未安装)
# pip install akshare pandas sklearn# 导入必要的库
import akshare as ak
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score# 设置股票代码和日期范围
stock_code = "000001" # 示例股票代码
start_date = "2023-01-01"
end_date = "2023-12-31"# 获取历史日线数据
stock_data = ak.stock_zh_a_hist(symbol=stock_code, start_date=start_date, end_date=end_date, adjust="qfq")# 将数据转换为DataFrame
df = pd.DataFrame(stock_data)# 查看数据
print(df.head())# 数据预处理
# 将日期字段转换为日期类型
df["日期"] = pd.to_datetime(df["日期"])# 按日期排序
df = df.sort_values(by="日期")# 计算未来3天的涨跌情况
future_3_day_change = df["收盘价"].shift(-3).sub(df["收盘价"])
df["未来3天涨跌"] = future_3_day_change.apply(lambda x: "涨" if x > 0 else "跌")# 删除NaN值
df.dropna(subset=["未来3天涨跌"], axis=0, how="any")# 查看排序后的数据
print(df.head())# 保存数据为CSV文件
df.to_csv(f"{stock_code}_daily_data.csv", index=False, encoding="utf-8-sig")
print(f"数据已保存到 {stock_code}_daily_data.csv")# 构建分类任务
# 特征和目标变量
X = df[["开盘价", "最高价", "最低价", "成交量"]]
y = df["未来3天涨跌"]# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 构建随机森林分类器
clf = RandomForestClassifier(n_estimators=100, random_state=42)# 训练模型
clf.fit(X_train, y_train)# 预测测试集
y_pred = clf.predict(X_test)# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"模型准确率为:{accuracy:%.2f}")

这个有报错,懒得改了

KeyError                                  Traceback (most recent call last)
/tmp/ipykernel_35/3161264376.py in <cell line: 0>()
      1 # 将日期字段转换为日期类型
----> 2 df["日期"] = pd.to_datetime(df["日期"])
      3 
      4 # 按日期排序
      5 df = df.sort_values(by="日期") 

修改一次后还有报错:

AttributeError: 'DataFrame' object has no attribute 'columnss'

放弃了。

 

文心4.5表现

 生成数据集


import akshare as ak
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split# 1. 获取股票数据
def get_stock_data(stock_code="000001", start_date="20200101", end_date="20250604"):df = ak.stock_zh_a_hist(symbol=stock_code, period="daily", start_date=start_date, end_date=end_date)df['日期'] = pd.to_datetime(df['日期'])df = df.sort_values('日期').reset_index(drop=True)return df# 2. 特征工程
def create_features(df, window=5):# 基础特征df['return'] = df['收盘'].pct_change()df['volatility'] = df['return'].rolling(window).std()df['ma5'] = df['收盘'].rolling(5).mean()df['ma10'] = df['收盘'].rolling(10).mean()# 技术指标df['rsi'] = compute_rsi(df['收盘'], 14)df['macd'], df['signal'] = compute_macd(df['收盘'])# 未来3天涨跌标签 (1:涨, 0:跌)df['target'] = (df['收盘'].shift(-3) > df['收盘']).astype(int)# 删除无效行df = df.dropna().reset_index(drop=True)return df# 3. 技术指标计算函数
def compute_rsi(series, period=14):delta = series.diff()gain = delta.where(delta > 0, 0)loss = -delta.where(delta < 0, 0)avg_gain = gain.rolling(period).mean()avg_loss = loss.rolling(period).mean()rs = avg_gain / avg_lossreturn 100 - (100 / (1 + rs))def compute_macd(series, fast=12, slow=26, signal=9):ema_fast = series.ewm(span=fast).mean()ema_slow = series.ewm(span=slow).mean()macd = ema_fast - ema_slowsignal_line = macd.ewm(span=signal).mean()return macd, signal_line# 4. 数据预处理
def preprocess_data(df):features = df.drop(['日期', '股票代码', '开盘', '最高', '最低', '收盘', '成交量', '成交额', '振幅', '涨跌幅', '涨跌额', '换手率'], axis=1, errors='ignore')target = df['target']# 标准化from sklearn.preprocessing import StandardScalerscaler = StandardScaler()features_scaled = scaler.fit_transform(features)return features_scaled, target# 5. 主流程
if __name__ == "__main__":# 获取数据stock_df = get_stock_data("600519")  # 茅台股票# 特征工程feature_df = create_features(stock_df)# 预处理X, y = preprocess_data(feature_df)# 划分训练测试集X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, shuffle=False, random_state=42)# 保存为TabPFN可读格式np.savez('stock_data.npz', X_train=X_train, X_test=X_test, y_train=y_train, y_test=y_test)print("数据预处理完成,已保存为stock_data.npz")

训练预测

import numpy as np
from tabpfn import TabPFNClassifier# 加载预处理数据
data = np.load('stock_data.npz')
X_train, X_test = data['X_train'], data['X_test']
y_train, y_test = data['y_train'], data['y_test']# 初始化TabPFN
# classifier = TabPFNClassifier(device='cpu', n_estimators=8)
classifier = TabPFNClassifier(device='cuda', n_estimators=8)
N_ensemble_configurations=32
# 训练模型
classifier.fit(X_train, y_train)# 预测
y_pred = classifier.predict(X_test)
y_prob = classifier.predict_proba(X_test)[:, 1]# 评估
from sklearn.metrics import accuracy_score, roc_auc_score
print(f"测试集准确率: {accuracy_score(y_test, y_pred):.4f}")
print(f"测试集AUC: {roc_auc_score(y_test, y_prob):.4f}")# 预测未来3天涨跌
latest_data = X_test[-1].reshape(1, -1)  # 取最新数据
future_pred = classifier.predict(latest_data)
print(f"未来3天预测结果: {'上涨' if future_pred[0] == 1 else '下跌'}")

 

最终用的是cuda 

输出结果:

测试集准确率: 1.0000
测试集AUC: 1.0000
未来3天预测结果: 下跌

这个,有点问题吧,这训练的也太狠了....

总结

当前的AI都不能小瞧了,跟2年前比都有很大提升。

豆包还是比较有趣,它的理解能力不错,主动性高,但是水平比较平庸。

文心4.5是三者中水平最高的。

跃问,主要是在pandas处理数据那块就出问题了,再修改了一次之后,我就放弃了。

调试

发现几个ai都碰到了这个错误

TypeError                                 Traceback (most recent call last)
/tmp/ipykernel_35/4228700019.py in <cell line: 0>()
      8 
      9 # 初始化TabPFN
---> 10 classifier = TabPFNClassifier(device='cpu', N_ensemble_configurations=32)
     11 
     12 # 训练模型

TypeError: TabPFNClassifier.__init__() got an unexpected keyword argument 'N_ensemble_configurations'

通过help(TabPFNClassifier) ,看到应该是:

n_estimators

http://www.dtcms.com/a/567449.html

相关文章:

  • 顺义企业网站建站公司北京网站搭建服务
  • 温州建设网站哪家好建网站不花钱免费建站
  • 福建省建设干部培训中心网站首页网站空间500m是什么
  • wex5 后端实现全网站开发北京市通信管理局 网站备案
  • 小说网站开发源码东营房地产网站建设
  • 中国建设会计学网站自学网站查分数
  • 高校门户网站建设建议视频网站dedecms
  • 西安网站建设 大德织梦网站logo
  • 微信平台APP网站建设怎么样wordpress的模板目录在哪里
  • 焦作网站开发重庆做网站 外包公司
  • 好的手表网站充电网站建设方案
  • 有没有教做网站的app微信网页链接怎么制作
  • 天津地区网站建设个人怎么做旅游网站
  • 网站全局搜索如何做网站建站侵权怎么办
  • 建网站做淘宝客赚钱吗wordpress 上级分类
  • 试玩平台网站怎么做合肥市建设工程市场价格信息网站
  • 建大网站99建筑网99建设工程教育网
  • 有什么做兼职的好网站做字网站
  • 县网站建设东莞专业的网站制作有哪些
  • 如何在后台做网站流程个人博客网页设计html代码
  • 创世通网站建设大连城市建设档案馆官方网站
  • 邹平做网站的公司广州网站定做教程
  • 成都网站开发费用设计公司调研报告
  • 怎么建个自己的网站企业营销网站服务器1g够
  • 做网站需要走公司吗建设项目竣工环保验收公示网站
  • 学做网站基础知识品牌推广的步骤
  • 网站建设哪家好采用苏州久远网络手机上能不能制作网站开发
  • 可以做网站的编程有什么wordpress 权限修改
  • 南昌专业网站建设信息wordpress 迁移升级
  • 档案信息网站建设工作经验wordpress登录没有反应