【发布时间】:2019-04-15 22:33:21
【问题描述】:
我有一些 1500 行和 30 列的学生数据。我用过GradientBoostingClassifier。所有的数据都是分类的,在 0-80 和 0-90 的范围内。
我需要建立一个预测模型来预测学生是否会失败和通过。列“状态”是我的目标变量。下面是我用过的代码
from sklearn import preprocessing
le = preprocessing.LabelEncoder()
data=data.apply(le.fit_transform)
X=data.copy()
y=data['Status']
# Import train_test_split function
from sklearn.model_selection import train_test_split
# Split dataset into training set and test set
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
#Import Gradient Boosting Classifier model
from sklearn.ensemble import GradientBoostingClassifier
gb = GradientBoostingClassifier()
gb.fit(X_train, y_train)
#Predict the response for test dataset
y_pred = gb.predict(X_test)
以下是我的模型表现。
Accuracy: 0.9719317419707395
Precision: 0.9090272918124562
Recall: 0.5650282731622445
请告诉我应该如何改进模型以及如何处理广泛的分类数据。此外,当我在不同的数据集上测试模型时,大多数时候类别会由于拼写错误或新增内容而发生变化
std_id std_name Dem secn_id location bucket Primary_subject status
144 amy SEP 5.3 P dev english pass
230 mani SEV 11.3 E Tech math fail
299 sam DE 5.1 nap prac science pass
568 samy SEP 1.1 P prac V1 pass
769 elle SEP 1.2 pe prac english pass
761 tanj SEP 1.3 N tech V2 pass
112 jon ERM 3.0 N prac phy fail
116 pal NAN 9.1 sc etc V1V2 pass
116 pal NAN 9.2 sc etc V1V3 fail
113 josh NAN 9.3 du etc. erp fail
100 sug EVV 9.1 sc NAN che pass
323 adi ERP 3.1 NAN fit math fail
323 adi ERP 3.2 NAN fit math fail
这就是我的输入数据的样子。对于缺失值,我已将其替换为字符串“NAN”。如果学生更改了任何选项,则存在重复记录。
【问题讨论】:
-
准确度 0.97 需要提高吗?
-
你能添加两个类的 Prec,Recall
-
虽然准确度是 0.97。当我使用一组新数据,对其进行转换并适应这个模型时,它会给出非常错误的预测
标签: python machine-learning scikit-learn