构建模型并评估
-
这里采用逻辑回归、svm和决策树;随机森林和XGBoost进行模型构建,采取的评价方式是accuracy
-
首先导入我们需要用的库
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
from xgboost import XGBClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
X_train, X_test, y_train, y_test = train_test_split(df.drop('status', axis=1), df['status'], test_size=0.3, random_state=2018)
- 逻辑回归
ltc = LogisticRegression()
ltc.fit(X_train, y_train)
predicted = ltc.predict(X_test)
accuracy_score(y_test, predicted)
0.7477224947442186
- svm
svc = SVC()
svc.fit(X_train, y_train)
predicted = svc.predict(X_test)
accuracy_score(y_test, predicted)
0.7484232655921513
- 决策树
dtc = DecisionTreeClassifier()
dtc.fit(X_train, y_train)
predicted = dtc.predict(X_test)
accuracy_score(y_test, predicted)
0.7484232655921513
- 随机森林
rfc = RandomForestClassifier()
rfc.fit(X_train, y_train)
predicted = rfc.predict(X_test)
accuracy_score(y_test, predicted)
0.7687456201822004
- XGBoost
在利用XGBoost进行数据你和时,发现报错了,在检查特征类型时,发现“cust_id_bin”特征类型为"category"类型的,无法进行拟合,为了简单,我这里就直接删除了这个特征。。。
X_train.drop('cust_id_bin', axis=1, inplace=True)
X_test.drop('cust_id_bin', axis=1, inplace=True)
xgb = XGBClassifier()
xgb.fit(X_train, y_train)
xgb.predict(X_test)
accuracy_score(predicted, y_test)
0.7687456201822004