python-3.x - 如何使用多项逻辑回归解决多标签分类问题?
问题描述
我必须根据其他属性来预测学生所参加的课程类型。
prog
是一个分类变量,指示学生所参加的课程类型:“通用”(1)、“学术”(2) 或“职业”(3)
Ses
是一个分类变量,表示某人的社会经济阶层:“低”(1)、“中”(2)和“高”(3)
read
, write
, math
,science
是他们在不同测试中的分数
honors
他们是否已注册
import pandas as pd;
import numpy as np;
df1=pd.get_dummies(df,drop_first=True);
X=df1.drop(columns=['prog_general','prog_vocation'],axis=1);
y=df1.loc[:,['prog_general','prog_vocation']];
from sklearn.model_selection import train_test_split;
X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.30, random_state=42);
from sklearn.linear_model import LogisticRegression;
from sklearn.metrics import classification_report;
clf=LogisticRegression(multi_class='multinomial',solver='newton-cg');
model=clf.fit(X_train,y_train)
但是在这里我收到以下错误:
ValueError:输入形状错误 (140, 2)。
解决方案
因此,LogisticRegression
不处理多个目标。但 Sklearn 中的所有模型并非如此。例如,所有基于树的模型 ( DecisionTreeClassifier
) 都可以本地处理多输出。
要使其适用于LogisticRegression
,您需要一个MultiOutputClassifier
包装器。
例子:
import numpy as np
from sklearn.datasets import make_multilabel_classification
from sklearn.multioutput import MultiOutputClassifier
from sklearn.linear_model import LogisticRegression
X, y = make_multilabel_classification(n_classes=3, random_state=0)
clf = MultiOutputClassifier(estimator= LogisticRegression()).fit(X, y)
clf.predict(X[-2:])
推荐阅读
- windows - 在 Windows 版 Git Bash 中重新启用键盘快捷键
- react-native - 当 Modal 可见时,有没有办法与背景组件进行交互?
- html - 如何在离子3中的离子项目中添加彩色左上角弯曲三角形
- mysql - MySQL - 如何在游标的where子句中使用变量
- azure - 如何在 Azure 门户中自行离开目录?
- common-table-expression - Snowflake 中的递归 CTE 循环
- c# - .net 中的 swashbuckle cli 和 nswag 中的可空引用类型
- android - 我无法在 android studio 2.1.1 中构建我创建的应用程序
- c - 将可变参数 arg 列表 (...) 传递给另一个函数时出现问题
- python - 我如何知道函数应该解包多少个值?