我有一些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 :(得分:1)
您的模型表现不错。 为了进一步改善
调整GradientBoostingClassifier
的参数。您可以为n_estimators
,learning_rate
等参数设置值,并检查模型的性能。
对于此任务,我建议使用GridSearchCV
功能工程:您可以从现有功能中创建新功能。由于您没有提供数据,因此很难提出任何建议。您可以使用Random Forest
等检查功能的重要性,并使用具有高重要性的功能。
您可以尝试不同的算法,例如XGBoost
,LightGBM
甚至是neural network
您可以使用交叉验证器,例如Stratified ShuffleSplit
关于下一个问题。
同样,在不查看任何数据的情况下很难提出任何建议。 为了避免拼写错误,您可以强制用户从下拉列表等中选择值。 如果不是这种情况,您可以查看difflib库,该库将找到与您的类别最接近的匹配项。
答案 1 :(得分:1)
首先,我建议从一些数据清理和数据分析开始。 您的类别由于错误而更改的事实需要在预处理步骤中解决。这里没有太多捷径,您需要手动检查和修复数据。
还要检查是否存在缺失值。如果缺少价值,您还需要解决此问题。您可以删除样本(接受信息丢失),也可以将缺失值替换为特定功能的平均值。文献中还存在其他方法,但是第一步可以做到这两种方法。
请考虑检查每个班级中的样本数量。如果这两个类别严重不平衡,则可以考虑寻找解决“不平衡数据”的解决方案。
当处理分类变量时,分类为决策树/随机森林是不错的选择。
使用交叉验证来调整分类器的超参数也可以提高性能。
编辑(在添加数据表之后)
您可能不想使用学生的姓名,因为该功能与考试的成功与否无关。