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

模仿鸢尾花数据的交叉验证时,如何以自己导入的数据替代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]

    望采纳,谢谢!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

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

悬赏问题

  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序