Python实现信用卡欺诈检测:AdaBoost、随机森林和集成学习模型
- 下载数据集 可以使用以下 Python 代码下载数据集:
!pip install kaggle
from google.colab import files
uploaded = files.upload()
import os
os.environ['KAGGLE_USERNAME'] = 'Your Kaggle Username' # 需替换为自己的Kaggle用户名
os.environ['KAGGLE_KEY'] = 'Your Kaggle API Key' # 需替换为自己的Kaggle API Key
!kaggle datasets download -d pierra/credit-card-dataset-svm-classification
!unzip credit-card-dataset-svm-classification.zip
- 数据集划分 可以使用 sklearn 库中的 train_test_split 函数将数据集划分为训练集和测试集,并指定划分比例。
from sklearn.model_selection import train_test_split
import pandas as pd
data = pd.read_csv('creditcard.csv')
X = data.iloc[:, :-1].values # 特征
y = data.iloc[:, -1].values # 标签
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
- AdaBoost算法建模和评估 可以使用 sklearn 库中的 AdaBoostClassifier 类建立 AdaBoost 模型,并使用测试集评估模型的性能。
from sklearn.ensemble import AdaBoostClassifier
from sklearn.metrics import accuracy_score
clf = AdaBoostClassifier(n_estimators=100)
clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)
acc = accuracy_score(y_test, y_pred)
print('Accuracy:', acc)
- 随机森林算法建模和评估 可以使用 sklearn 库中的 RandomForestClassifier 类建立随机森林模型,并使用测试集评估模型的性能。
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
clf = RandomForestClassifier(n_estimators=100)
clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)
acc = accuracy_score(y_test, y_pred)
print('Accuracy:', acc)
- 集成学习模型建立和评估 可以使用 sklearn 库中的 VotingClassifier 类建立集成学习模型,并使用测试集评估模型的性能。
from sklearn.tree import DecisionTreeClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn.svm import LinearSVC, SVC
from sklearn.ensemble import VotingClassifier
from sklearn.metrics import accuracy_score
dt = DecisionTreeClassifier()
knn1 = KNeighborsClassifier(n_neighbors=1)
knn3 = KNeighborsClassifier(n_neighbors=3)
svm_linear = LinearSVC()
svm_rbf = SVC(kernel='rbf')
# 多数投票结合原则
clf = VotingClassifier(estimators=[('dt', dt), ('knn1', knn1), ('knn3', knn3), ('svm_linear', svm_linear), ('svm_rbf', svm_rbf)], voting='hard')
clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)
acc = accuracy_score(y_test, y_pred)
print('Accuracy (Majority Voting):', acc)
# 相对多数投票结合原则
clf = VotingClassifier(estimators=[('dt', dt), ('knn1', knn1), ('knn3', knn3), ('svm_linear', svm_linear), ('svm_rbf', svm_rbf)], voting='soft')
clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)
acc = accuracy_score(y_test, y_pred)
print('Accuracy (Weighted Voting):', acc)
原文地址: https://www.cveoy.top/t/topic/n1BX 著作权归作者所有。请勿转载和采集!