【发布时间】:2022-01-24 04:13:06
【问题描述】:
我的 .csv 文件如下所示:
| comment | toxicity |
|---|---|
| "toxic comment" | 0,6232 |
| "clean comment" | 0 |
| "another toxic comment" | 1 |
如果“毒性”值接近“1”,则表示评论非常有毒。
我想用这个条件做多类分类; toxicity=0 和 toxicity!=0 但我找不到如何将此条件应用于分类。
我做了类似的事情:
x= df.iloc[:,:-1].values
y=df.iloc[:,1].values
le = preprocessing.LabelEncoder()
x = le.fit_transform(x)
x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.2)
clf = KNeighborsClassifier(n_neighbors=3,algorithm='ball_tree')
clf.fit(x_train,y_train)
y_pred3 = clf.predict(x_test)
acc3 = accuracy_score(y_test,y_pred3)
但是我收到了这个错误;
Traceback(最近一次调用最后一次):
文件“C:\Users\hayyi.spyder-py3\temp.py”,第 123 行,在 clf.fit(x_train,y_train)
文件 "D:\SpyderUI\MiniConda\envs\spyder-env\lib\site-packages\sklearn\neighbors_classification.py", 第 198 行,合适 返回 self._fit(X, y)
文件 "D:\SpyderUI\MiniConda\envs\spyder-env\lib\site-packages\sklearn\neighbors_base.py", 第 400 行,在 _fit X, y = self._validate_data(X, y, accept_sparse="csr", multi_output=True)
文件 "D:\SpyderUI\MiniConda\envs\spyder-env\lib\site-packages\sklearn\base.py", 第 576 行,在 _validate_data 中 X, y = check_X_y(X, y, **check_params)
文件 "D:\SpyderUI\MiniConda\envs\spyder-env\lib\site-packages\sklearn\utils\validation.py", 第 956 行,在 check_X_y X = check_array(
文件 "D:\SpyderUI\MiniConda\envs\spyder-env\lib\site-packages\sklearn\utils\validation.py", 第 761 行,在 check_array 中 引发 ValueError(
ValueError:预期的 2D 数组,得到 1D 数组:array=[1356040 918709 372428 ... 719104 1170089 1856713]。重塑您的数据 如果您的数据具有单个特征,则使用 array.reshape(-1, 1) 或 array.reshape(1, -1) 如果它包含单个样本。
然后我尝试对这样的拆分数据进行线性回归;
reg = LinearRegression()
reg.fit(X_train,Y_train)
predict_test = reg.predict(X_test)
plt.scatter(X_train,Y_train)
plt.plot(X_train,predict_test, color='red')
问题 1 如何在 toxicity=0 和 toxicity!=0 条件下进行多类分类?
问题 2 我的线性回归代码错了吗?我打印了回归表,但似乎非常错误。
【问题讨论】:
标签: python dataframe scikit-learn multiclass-classification