估
主要对相关数据进行分析统计视图,而后进行标准化处理,训练数据,而后利用各个模型进行评。
目录
一.导入相关库与数据
导入相关资源库和依赖。
二.对数据进行分析
首先应是对数据进行预处理,而后进行数据清洗等操作。
cases = len(df)
nonfraud_count = len(df[df.Class == 0])
fraud_count = len(df[df.Class == 1])
fraud_percentage = round(fraud_count/nonfraud_count*100, 2)
print(cl('案例总数为 {}'.format(cases)))
print(cl('非欺诈案件的数量为 {}'.format(nonfraud_count)))
print(cl('欺诈案件的数量为 {}'.format(fraud_count)))
print(cl('诈骗案件的百分比为 {}'.format(fraud_percentage)))
三.统计视图
对于相关对数据进行统计并且以视图的方式。
nonfraud_cases = df[df.Class == 0]
fraud_cases = df[df.Class == 1]
print(cl('非欺诈案件金额统计'))
print(nonfraud_cases.Amount.describe())
print(cl('--------------------------------------------'))
print(cl('诈骗个案金额统计'))
print(fraud_cases.Amount.describe())
四.标准化
sc = StandardScaler()
amount = df['Amount'].values
df['Amount'] = sc.fit_transform(amount.reshape(-1, 1))
print(cl(df['Amount'].head(10), attrs = ['bold']))
五.训练数据
X = df.drop('Class', axis = 1).values
y = df['Class'].values
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size = 0.2, random_state = 0)
六.模型建立和模型评估
# 1. 决策树模型:
决策树属于有监督学习算法,又称为CART(Classification and Regression Trees),可以用于解决分类和回归问题。
本文主要讨论决策分类树(下文称为决策树),即通过一系列决策规则分类数据。
tree_model = DecisionTreeClassifier(max_depth = 4, criterion = 'entropy')
tree_model.fit(X_train, y_train)
tree_yhat = tree_model.predict(X_test)
print(format(accuracy_score(y_test, tree_yhat)))
print( '决策树准确率:',format(f1_score(y_test, tree_yhat)))
# 2. k近邻算法KNN:K-近邻算法是最简单的分类器,没有显式的学习过程或训练过程,是懒惰学习(Lazy Learning)。
n = 5
knn = KNeighborsClassifier(n_neighbors = n)
knn.fit(X_train, y_train)
knn_yhat = knn.predict(X_test)
print(format(accuracy_score(y_test, knn_yhat)))
print('k近邻算法KNN准确率:',format(f1_score(y_test, knn_yhat)))
# 3. 逻辑回归:
(Logistic regression/LR)虽然其中带有"回归"两个字,但逻辑回归其实是一个分类模型,并且广泛应用于各个领域之中。虽然现在深度学习相对于这些传统方法更为火热,但实则这些传统方法由于其独特的优势依然广泛应用于各个领域中。
lr = LogisticRegression()
lr.fit(X_train, y_train)
lr_yhat = lr.predict(X_test)
print(format(accuracy_score(y_test, lr_yhat)))
print('逻辑回归准确率:',format(f1_score(y_test, lr_yhat)))
# 4. SVM:支持向量机(Support Vector Machine,SVM)是一种机器学习算法,用于分类和回归分析。它能够有效地处理线性可分和线性不可分的数据,并在高维空间中构建最优的决策边界。
svm = SVC()
svm.fit(X_train, y_train)
svm_yhat = svm.predict(X_test)
print(format(accuracy_score(y_test, svm_yhat)))
print('SVM准确率:',format(f1_score(y_test, svm_yhat)))
# 5. 随机森林:是一种基于集成学习的算法,它通过构建多个决策树并将它们的预测结果进行集成来进行回归任务。在随机森林中,每棵决策树都是独立并在随机选择的子样本上进行训练的,这样可以有效地减少过拟合的风险。随机森林通过将多个决策树的预测结果进行平均或加权平均,从而得到最终的回归结果。
rf = RandomForestClassifier(max_depth = 4)
rf.fit(X_train, y_train)
rf_yhat = rf.predict(X_test)
print(format(accuracy_score(y_test, rf_yhat)))
print('随机森林准确率:',format(f1_score(y_test, rf_yhat)))
# 6. XGBoost:这是一个优化的分布式梯度提升库,旨在实现高效、灵活且便携的机器学习算法。
xgb = XGBClassifier(max_depth = 4)
xgb.fit(X_train, y_train)
xgb_yhat = xgb.predict(X_test)
print(format(accuracy_score(y_test, xgb_yhat)))
print('XGBppst准确率:',format(f1_score(y_test, xgb_yhat)))