数据
data_all.csv文件是非原始数据,已经处理过了。数据是金融数据, 我们要做的是预测贷款用户是否会逾期。表格中, status是标签: 0表示未逾期, 1表示逾期。
任务——模型构建
给定数据集,数据三七分,随机种子2018。(在任务1中什么都不用考虑,即不需数据处理和模型调参)
调用sklearn的包,简单构建逻辑回归、SVM和决策树3个模型,评分方式任意(e.g. 准确度和auc值)。
代码实现
- 导入所需的所有包
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
from sklearn.metrics import roc_auc_score
from sklearn.svm import LinearSVC
from sklearn import tree
- 加载数据
file_path = 'G:\DatawhaleWeek01\Data\data_all.csv'
row_data = pd.read_csv(file_path)
- 数据分析
print(row_data.head())
print(row_data.describe())
# 查看每列是否有缺失值
print(row_data.isnull().sum())
# 查看所有的列名
print(row_data.columns)
# 查看索引
print('index:',row_data.index)
- 划分数据集
# 特征是除去“status”列的所有值
feature = [x for x in row_data.columns if x not in ['status']]
X = row_data[feature]
# 'status'列是标签
y = row_data['status']
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.3,random_state=2018)
- 构建模型
5.1逻辑回归
lr = LogisticRegression(random_state=2018)
lr.fit(X_train,y_train)
# 得到预测标签值
lr_predict = lr.predict(X_test)
# 得到预测标签的概率(标签为0的概率,标签为1的概率)
lr_predict_proba = lr.predict_proba(X_test)
print(lr_predict)
print(lr_predict_proba)
5.2LinearSVM
clf = LinearSVC(C=5)
clf.fit(X_train,y_train)
y_test= clf.predict(X_test)
print(y_test)
5.3决策树
clf = tree.DecisionTreeClassifier()
clf.fit(X_train,y_train)
y_test= clf.predict(X_test)
y_test_proba = clf.predict_proba(X_test)
print(y_test)
print(y_test_proba)
- 模型评分
6.1准确率
y_true = y_test
print(y_true.shape)
print(y_test.shape)
data_accuracy_score = accuracy_score(y_true=y_true, y_pred=lr_predict)
print("准确率:",data_accuracy_score)
遇到的问题
1.虽然会使用sklearn简单的实现逻辑回归、SVM、决策树等等模型,但是各个模型里面的参数并没有完全理解(比如random_state,C等等参数)
2.模型评分中的AUC不理解什么意思,只知道需要试用版roc_auc_score()函数,函数里面有两个参数,一个是测试标签,一个是预测标签的概率,但是预测标签的概率有两个值(标签为0的概率,标签为1的概率),到底应该使用那个概率值?