在调用sklearn fit时出现 Unknown label type: 'unknown'错误

本文探讨了在使用sklearn进行特征选择时遇到的'Unknown label type: 'unknown''错误。主要原因是输入数据类型与函数期望类型不符。文章提供了两种解决方案,一种是在分类任务中将标签转换为整型,另一种是在回归任务中使用适合浮点数的特征选择方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在调用sklearn selectKBest().fit时出现 Unknown label type: 'unknown'错误:

 

当出现此问题时一般来说是你传入的数据类型被调用函数不接受, 你需要改变数据类型。

1.

例如采用卡方验证选取特征时,如果你传入的是标签是float类型,会产生此错误。

后加上astype(‘int’)即可 例如:

                                                                                 .fit(train_x,train_y.astype(‘int’))

2.如果你使用的是回归预测标签需要float类型, 如下例 你不可以使用chi2 它的里面不接受浮点数,只接受分类的类标签值(int)可以用 f_regression

详细内容参考:

 

附网址:http://scikit-learn.org/stable/modules/feature_selection.html#univariate-feature-selection

import pandas as pd from sklearn.preprocessing import LabelEncoder,StandardScaler from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier data = pd.read_excel('valid.xlsx') def deleta(data): data = str(data) for i in data: if '%' in i: data = data.strip('%') else: data = data return data del data['电影id'] data['2星占比'] = data['2星占比'].apply(deleta) data['1星占比'] = data['1星占比'].apply(deleta) data['主演'] = data['主演'].str.split(',').apply(lambda x: x[0]) data['类型'] = data['类型'].str.split('/').apply(lambda x: x[0]) data['地区'] = data['地区'].str.split('/').apply(lambda x: x[0]) data['语言'] = data['语言'].str.split('/').apply(lambda x: x[0]) data['上映间'] = data['上映间'].astype(str).apply(lambda x: x[:4]) for i in data.columns: if data[i].dtype == 'object': enconder = LabelEncoder() data[i] = enconder.fit_transform(data[i]) else: data[i] = pd.to_numeric(data[i]) datas = pd.read_excel('pre.xlsx') for i in datas.columns: print(datas[i].dtype) datass = datas[datas.columns[:-1]] score = datas['评分'] x_train, x_test, y_train, y_test = train_test_split(datass, score, test_size=0.2, random_state=50) transform = StandardScaler() x_train = transform.fit_transform(x_train) x_test = transform.transform(x_test) es = KNeighborsClassifier(n_neighbors=32) es.fit(x_train, y_train) predict = es.predict(y_test) print(predict)报错ValueError: Unknown label type: continuous. Maybe you are trying to fit a classifier, which expects discrete classes on a regression target with continuous values. datas的数据类型全部是浮点型
最新发布
03-09
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值