二分类银行精准营销的单一分类算法尝试

# 加载教程中会用到的包
import numpy as np 
import pandas as pd 
import matplotlib.pyplot as plt
import seaborn as sns

# 加载 warnings
import warnings

# 忽略 warnings
warnings.filterwarnings("ignore")
# 从csv文件中写入数据
train = pd.read_csv('bank_train_set.csv')
test = pd.read_csv('bank_test_set.csv')
print(plt.style.available)   # 列出所有可用的绘图样式
plt.style.use('ggplot')      # 使用“ggplot”样式   
data=pd.concat([train,test])

处理类型变量

for s in ['campaign','contact','default','education','housing','job','loan','marital','month','poutcome']:
    data=pd.concat([data,pd.get_dummies(data[s],prefix=s+'_')],axis=1)
    data.drop(s,axis=1,inplace=True)
data.drop(columns = ['ID'], inplace = True)

取出有目标值的集合

df_train=data[data['y'].notnull()]
df_test=data[data['y'].isnull()]

knn 不同参数

neig = np.arange(1, 100)
train_accuracy = []
test_accuracy = []
# 循环K值从1到25
for i, k in enumerate(neig):
    # k从1到25(不包括1、25)
    knn = KNeighborsClassifier(n_neighbors=k)
    # 使用KNN拟合
    knn.fit(x_train,y_train)
    # 训练集的准确度
    train_accuracy.append(knn.score(x_train, y_train))
    # 测试集的准确度
    test_accuracy.append(knn.score(x_test, y_test))

# 可视化
plt.figure(figsize=[13,8])
plt.plot(neig, test_accuracy, label = 'Testing Accuracy')
plt.plot(neig, train_accuracy, label = 'Training Accuracy')
plt.legend()
plt.title('-value VS Accuracy')
plt.xlabel('Number of Neighbors')
plt.ylabel('Accuracy')
plt.xticks(neig)
plt.savefig('graph.png')
plt.show()
print("Best accuracy is {} with K = {}".format(np.max(test_accuracy),1+test_accuracy.index(np.max(test_accuracy))))

knn

from sklearn.model_selection import cross_val_score
neig = np.arange(1, 100)
train_accuracy = []
test_accuracy = []
# 循环K值从1到100
for i, k in enumerate(neig):
    # k从1到100(不包括1、100)
    knn = KNeighborsClassifier(n_neighbors=k)
    cv_result=cross_val_score(knn,x,y,cv=5,scoring='accuracy')#把数据自动分成五组,然后得到每组的准确度
    # 测试集的准确度
    test_accuracy.append(np.sum(cv_result)/5)

# 可视化
plt.figure(figsize=[13,8])
plt.plot(neig, test_accuracy, label = 'Testing Accuracy')
plt.legend()
plt.title('-value VS Accuracy')
plt.xlabel('Number of Neighbors')
plt.ylabel('Accuracy')
plt.xticks(neig)
plt.savefig('graph.png')
plt.show()

print("Best accuracy is {} with K = {}".format(np.max(test_accuracy),1+test_accuracy.index(np.max(test_accuracy))))
from sklearn.model_selection import cross_val_score
from sklearn.ensemble import RandomForestClassifier
neig = np.arange(1, 100)
train_accuracy = []
test_accuracy = []
# 循环K值从1到25
for i, k in enumerate(neig):
    # k从1到25(不包括1、25)
    clf = RandomForestClassifier(n_estimators=k, random_state=0)
    cv_result=cross_val_score(clf,x,y,cv=5,scoring='accuracy')#把数据自动分成五组,然后得到每组的准确度
    # 测试集的准确度
    test_accuracy.append(np.sum(cv_result)/5)

# 可视化
plt.figure(figsize=[13,8])
plt.plot(neig, test_accuracy, label = 'Testing Accuracy')
plt.legend()
plt.title('-value VS Accuracy')
plt.xlabel('Number of Trees')
plt.ylabel('Accuracy')
plt.xticks(neig)
plt.savefig('graph.png')
plt.show()
print("Best accuracy is {} with K = {}".format(np.max(test_accuracy),1+test_accuracy.index(np.max(test_accuracy))))
from sklearn.model_selection import cross_val_score
from sklearn.ensemble import RandomForestClassifier
neig = np.arange(1, 50)
train_accuracy = []
test_accuracy = []
# 循环K值从1到25
for i, k in enumerate(neig):
    # k从1到25(不包括1、25)
    clf = RandomForestClassifier(n_estimators=4,max_depth=k,
                                 random_state=0)

    cv_result=cross_val_score(clf,x,y,cv=5,scoring='accuracy')#把数据自动分成五组,然后得到每组的准确度
    # 测试集的准确度
    test_accuracy.append(np.sum(cv_result)/5)

# 可视化
plt.figure(figsize=[13,8])
plt.plot(neig, test_accuracy, label = 'Testing Accuracy')
plt.legend()
plt.title('-value VS Accuracy')
plt.xlabel('max_depth')
plt.ylabel('Accuracy')
plt.xticks(neig)
plt.savefig('graph.png')
plt.show()
print("Best accuracy is {} with K = {}".format(np.max(test_accuracy),1+test_accuracy.index(np.max(test_accuracy))))
Unknown-7.png
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 13,946评论 6 13
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,872评论 1 32
  • 十年花香浸书凉 同窗岁月自难忘 灼灼桃花凉 悠悠浸芳香 昙花指尖现 流星划瞬间 十年岁月 犹如穿梭 犹如射箭 转瞬即逝
    风怡涵阅读 2,312评论 0 1
  • 时间飞快,转眼间猫咪们已经快2个月了,从你们出生就已结下缘分,还记得小时候其实一直很想养狗狗,因为亲戚家的...
    麦田守望者s阅读 3,669评论 2 3
  • 这个冬天 我什么都没做 除了爱你 ▼ 我喜欢你 是那种一想到你的名字 心里动辄海啸山鸣的喜欢 ▼ 雨落尘烟 桃花十...
    书影流光阅读 4,531评论 2 13

友情链接更多精彩内容