python - ValueError: y 应该是一维数组,得到一个形状为 (5024, 2) 的数组
问题描述
这是我的 Python 代码:
df = pd.read_csv('sme_loan.csv', sep=',',dtype=str)
#print(df)
df2 = df.drop(columns=['problem'])
xx = df2.to_numpy()
yy = pd.DataFrame(df, columns = ['problem'])
yyy = np.ravel(yy)
from sklearn.preprocessing import OneHotEncoder
enc = OneHotEncoder(handle_unknown='ignore')
enc.fit(xx)
xxx = enc.transform(xx).toarray()
clf = LogisticRegression(solver="liblinear").fit(xxx, yy)
result = roc_auc_score(yyy, clf.predict_proba(xxx), multi_class='ovr')
print("df:")
print(df)
print("xx:")
print(xx)
print("xxx:")
print(xxx)
print("yy:")
print(yy)
print("yyy:")
print(yyy)
这是错误:
Warning (from warnings module):
File "C:\Python39\lib\site-packages\sklearn\utils\validation.py", line 63
return f(*args, **kwargs)
DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().
Traceback (most recent call last):
File "C:\Users\Hp\Desktop\jupyter\r\r.py", line 30, in <module>
...
ValueError: y should be a 1d array, got an array of shape (5024, 2) instead.
我正在尝试计算 AUC 分数。我无法将形状转换为一维数组。我尝试了 flatten() 和 ravel(yy),但没有帮助。帮忙预告!
解决方案
我猜这不是yyy
给出这个错误,而是clf.predict_proba(xxx)
.
predict_proba()返回一个大小为 的数组(n_samples, n_classes)
。假设您有 2 个类,这就是为什么您有一个形状数组 (5024, 2)。
如果您将预测类的一维数组与相同大小的实际类的一维数组进行比较,请predict_proba()
用predict()替换以获取预测类而不是预测概率。
推荐阅读
- excel - XML 到 Excel 映射(或 Access)的新手——想要保存和重复使用映射
- android - 使用一段时间后无法连接 Azure 通知 nhub
- html - jquery搜索卡
- bitbucket - 使用 Bitbucket 存储库集成时如何设置 SDK 版本
- c++ - 增加对每个学生的分数进行排名的功能
- python - Cartopy:绘制区域地图时的经度标签错误
- c# - 遗漏的保留的 MQTT 消息
- html - CSS flexbox:在具有不同内容量的卡片内垂直对齐操作按钮
- php - 从 laravel 8 中的函数使用端点
- javascript - 如何减少表中出现的相同值的多个实例?