如何修复未知标签类型:“连续”?

Posted

技术标签:

【中文标题】如何修复未知标签类型:“连续”?【英文标题】:How can I fix Unknown label type: 'continuous'? 【发布时间】:2022-01-24 06:07:16 【问题描述】:

我有 2 列(评论、毒性)csv 文件。注释是字符串,毒性是浮点数。

|评论 |专栏 | |:---- |:-----:| |有毒评论 | 0,6817 | 我想用这段代码做特征重要性;

import numpy as np
import tensorflow as tf
import pickle
import pandas as pd
import os
import nltk
import re
import matplotlib.pyplot as plt
import seaborn as sns
import string

from tensorflow.keras.models import Sequential
from tensorflow.keras.preprocessing.text import Tokenizer
from tensorflow.keras.preprocessing.sequence import pad_sequences
from tensorflow.keras.layers import Dense, Input, LSTM, Embedding, 
Dropout, Activation
from tensorflow.keras.layers import Bidirectional, GlobalMaxPool1D
from tensorflow.keras import initializers, regularizers, constraints, 
optimizers, layers
from tensorflow.keras import layers , activations , models , 
preprocessing, 
utils
from gensim.models import Word2Vec, KeyedVectors
from sklearn import metrics
from sklearn import preprocessing
from sklearn.linear_model import LinearRegression
from nltk.corpus import stopwords
from nltk import word_tokenize
from sklearn.metrics import roc_curve
from sklearn.metrics import auc
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
from collections import defaultdict
from sklearn.ensemble import ExtraTreesClassifier

df=pd.read_csv("toxic.csv")
labelencoder = preprocessing.LabelEncoder()
df['comment'] = labelencoder.fit_transform(df['toxicity'])

Y=df['toxicity'].values
X=df['comment'].values.reshape(-1, 1)   #target column toxicity


model = ExtraTreesClassifier()
model.fit(X,Y)
feat_importances = pd.Series(model.feature_importances_,index=X.columns)
feat_importances.nlargest(10).plot(kind='barh')
plt.show()

但我遇到了这个错误;

Traceback(最近一次通话最后一次):

文件“C:\Users\hayyi.spyder-py3\temp.py”,第 218 行,在 模型.fit(X,Y)

文件 "D:\SpyderUI\MiniConda\envs\spyder-env\lib\site-packages\sklearn\ensemble_forest.py", 第 367 行,合适 y, expand_class_weight = self._validate_y_class_weight(y)

文件 "D:\SpyderUI\MiniConda\envs\spyder-env\lib\site-packages\sklearn\ensemble_forest.py", 第 724 行,在 _validate_y_class_weight check_classification_targets(y)

文件 "D:\SpyderUI\MiniConda\envs\spyder-env\lib\site-packages\sklearn\utils\multiclass.py", 第 198 行,在 check_classification_targets 中 raise ValueError("未知标签类型:%r" % y_type)

ValueError:未知标签类型:'连续'

我该如何解决这个问题?

【问题讨论】:

欢迎来到 Stack Overflow。请阅读How to Ask 和***.com/help/minimal-reproducible-example。如果问题出现在 scikit 部分,那么我们不需要查看您的代码来绘制结果。我们确实需要查看完整代码来设置问题 - 包括必要的imports,以及df DataFrame 的初始数据。 (它不一定是你的真实数据;它应该很小,但应该足以重现问题。) 感谢您的回答。我编辑了问题。 您展示的代码真的需要所有这些导入吗?此外,向我们展示您通过读取 CSV 文件创建了 DataFrame 对我们没有帮助,因为我们没有您的文件并且不知道它的结构。相反,您应该将其替换为硬编码创建 DataFrame(即直接调用构造函数)。 我尝试了很多方法来解决这个问题,因为它有很多导入。不知道怎么直接调用构造函数。 您不知道如何从 Python 代码中的硬编码数据创建 DataFrame?真的吗?您是否尝试阅读文档? 【参考方案1】:

首先,必须清楚您要解决什么类型的问题。这是分类还是回归问题? (我假设您已经知道这些差异)

在您的情况下,我假设您正在处理回归问题,因为 toxicityfloat

在您的代码中,您使用的算法仅适用于分类问题:ExtraTreesClassifier()。您收到的错误是因为算法不知道如何处理y 中的连续值,它只知道如何处理分类y

要解决,请尝试使用另一种算法:ExtraTreesRegressor(),这与您使用的算法相同,但设计用于解决回归问题。

【讨论】:

感谢您的回答。我使用 ExtraTreesRegressor() 但现在我得到 AttributeError: 'numpy.ndarray' object has no attribute 'columns' 这个错误。 嗨!请尝试在 x 和 y 之后删除 .values

以上是关于如何修复未知标签类型:“连续”?的主要内容,如果未能解决你的问题,请参考以下文章

如何更正值错误:未知标签类型“连续”

对于未知数量的域,跨域的 $.post 的替代/修复是啥

Smarty:如何修复“未知修饰符'rewrite'”异常?

如何修复 DiscordAPIError:未知成员?

OSX 修复 Selenium Chromedriver 启动错误产生未知系统错误 -86 可执行文件中的错误 CPU 类型?

未知标签类型:连续