数据建模五大步(以KNeighborsClassifier算法为主)

本文详细介绍了使用KNeighborsClassifier进行数据建模的五个步骤,包括加载数据、数据标准化、训练模型、参数调优和模型保存。通过K折交叉验证评估模型性能,并使用pickle和joblib模块进行模型的保存和读取。
摘要由CSDN通过智能技术生成
'''
    KNeighborsClassifier
'''
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
import pickle       #pickle模块
from sklearn.externals import joblib    #jbolib模块
from sklearn import preprocessing       #标准化数据模块
from sklearn.cross_validation import cross_val_score # K折交叉验证模块
import matplotlib.pyplot as plt


# 第一步: 加载数据集
iris = datasets.load_iris()            # 加载数据集
iris_X = iris.data
iris_y = iris.target

# 自己制造数据 *** make_XXX
X, y = datasets.make_classification(n_samples=300, n_features=2, n_redundant=0,
    n_informative=2, random_state=22, n_clusters_per_class=1, scale=100)
# X, y = datasets.make_regression(n_samples=100, n_features=1, n_targets=1, noise=10)


# 第二步: 数据集标准化, 划分测试集、训练集
iris_X = preprocessing.scale(iris_X)    # 标准化数据
# 随机划分训练集和测试集 7:3
X_train, X_test, y_train, y_test = train_test_split(
                iris_X, iris_y, test_size=0.3, random_state=0)


# 第三步: 训练模型
knn = KNeighborsClassifier(n_neighbors=5)            # 训练模型
knn.fit(X_train, y_train)
print(knn.predict(X_test))            # 利用模型做预测
print(y_test)
print(knn.score(X_test, y_test))      # 模型打分

scores = cross_val_score(knn, iris_X, iris_y, cv=5, scoring='accuracy')
print(scores.mean())                # 使用K折交叉验证模块


# 第四步:建立测试参数集,调参,优化模型
k_range = range(1, 31)
k_scores = []

#藉由迭代的方式来计算不同参数对模型的影响,并返回交叉验证后的平均准确率
for k in k_range:
    knn = KNeighborsClassifier(n_neighbors=k)
    scores = cross_val_score(knn, iris_X, iris_y, cv=10, scoring='accuracy')     # 分类
    # loss = -cross_val_score(knn, X, y, cv=10, scoring='mean_squared_error')    # 回归
    k_scores.append(scores.mean())

#可视化数据
plt.plot(k_range, k_scores)
plt.xlabel('Value of K for KNN')
plt.ylabel('Cross-Validated Accuracy')
plt.show()


# 第五步: 保存模型
# 保存Model 方法一:(:save文件夹要预先建立,否则会报错)  pickle 方法
with open('Model/Pickle/KNeighborsClassifier.pickle', 'wb') as f:
    pickle.dump(knn, f)

#读取Model
with open('Model/Pickle/KNeighborsClassifier.pickle', 'rb') as f:
    clf2 = pickle.load(f)
    print(clf2.predict(iris_X))         #测试读取后的Model


#保存Model 方法二:(:save文件夹要预先建立,否则会报错) joblib 方法  优点:效率高
joblib.dump(knn, 'Model/Joblib/KNeighborsClassifier.pkl')

#读取Model
clf3 = joblib.load('Model/Joblib/KNeighborsClassifier.pkl')
print(clf3.predict(iris_X))           #测试读取后的Model
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值