weixin_45773100 2021-12-11 15:30 采纳率: 100%
浏览 210
已结题

模仿鸢尾花数据的交叉验证时,如何以自己导入的数据替代iris.data, iris.target?

问题遇到的现象和发生背景

我需要利用股票数据做决策树分类器,我把A股市值作为y,其余特征项作为x,仿照鸢尾花数据集的案例构造决策树,交叉验证的时候我用df_X和df_y代替iris.data, iris.target,但试了很多次都有报错,这次是大片红色报错,请问有人知道该怎么改吗?
网上鸢尾花数据交叉验证的参考:

cross_val_score(clf, iris.data, iris.target, cv=10)
问题相关代码,请勿粘贴截图
from sklearn import tree
import pandas as pd
df=pd.read_excel('数据.xlsx') #读取数据
type(df)
'化连续为离散'
df=pd.read_excel('数据.xlsx')
df=df.dropna()
df=df.drop(0,axis = 0)
df=df.iloc[::-1]
df_diff=df.iloc[:,1:].diff(axis = 0)
df[df_diff >= 0] = 1   #变量上涨则赋值为1
df[df_diff < 0] = 0    #变量下跌则赋值为0
df=df.reset_index(drop = True) #重置索引
df=df.drop(0,axis = 0) #删除无法赋值的第0行
df=df.drop('指标名称',axis = 1) #删除日期列
df=df.reset_index(drop = True) #重置索引
df
'分离训练集与数据集'
train=df.head(211)
test=df.tail(8)
test=test.reset_index(drop = True)
X_train=train.drop('上证A股指数',axis = 1)
X_test=test.drop('上证A股指数',axis = 1)
y_train=train['上证A股指数']
y_test=test['上证A股指数']
'强制转换数据类型'
X_train=X_train.astype('int')
X_test=X_test.astype('int')
y_train=y_train.astype('int')
y_test=y_test.astype('int')
'构造决策树'
from sklearn import tree
clf = tree.DecisionTreeClassifier() #创建分类器对象
clf.fit(X_train,y_train) #用训练集拟合分类器模型
clf.predict(X_test) #用训练好的分类器预测数据的标签
'交叉验证'
from sklearn.model_selection import cross_val_score
from sklearn import tree
clf = tree.DecisionTreeClassifier() #创建分类器对象
df_X=df.drop('上证A股指数',axis = 1)
df_y=df['上证A股指数']
score = cross_val_score(clf,df_X,df_y,cv=10,scoring='accuracy')
运行结果及报错内容

img

D:\Anaconda\lib\site-packages\sklearn\model_selection_validation.py:536: FitFailedWarning: Estimator fit failed. The score on this train-test partition for these parameters will be set to nan. Details:
ValueError: Unknown label type: 'unknown'

FitFailedWarning)

  • 写回答

2条回答 默认 最新

  • 东华果汁哥 2021-12-11 18:15
    关注

    问题分析:
    iris.data 类型是一个数据框
    iris.target 类型是一pandas.Seris 序列

    解决办法:
    1、首先用data=pd.read_csv() 方法读取数据集
    如:# 导入txt数据
    data=pd.read_csv(train_data_path,sep='\t')
    2、把特征和目标 赋值给X_train,y_train 相当于iris.data,iris.target

    筛选自变量

    X_train=data.iloc[:,:-1]

    筛选因变量

    y_train=data.iloc[:,-1]

    望采纳,谢谢!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • 东华果汁哥 2021-12-13 14:23
    关注

    如有帮助,请点击我评论上方【采纳该答案】按钮支持一下。

    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月23日
  • 已采纳回答 12月15日
  • 赞助了问题酬金 12月11日
  • 修改了问题 12月11日
  • 展开全部

悬赏问题

  • ¥15 询问MYSQL查询SQLSERVER数据表并比较差异后,更新MYSQL的数据表
  • ¥15 关于#前端#的问题,请各位专家解答!
  • ¥15 最小生成树问题 Prim算法和Kruskal算法
  • ¥25 医院住院病人呼叫器设计
  • ¥15 不想和现在的团队合作了,怎么避免他们对程序动手脚
  • ¥30 c++类和数组实验代码
  • ¥20 C语言字符串不区分大小写字典排序相关问题
  • ¥15 关于#python#的问题:我希望通过逆向技术爬取1688搜索页下滑加载的数据
  • ¥15 关于Linux的终端里,模拟实现一个带口令保护的屏保程序遇到的输入输出的问题!(语言-c语言)
  • ¥30 请问,这个嵌入式Linux系统怎么分析,crc检验区域在哪