sklearn入门级教学

本文介绍了如何使用Python的sklearn库进行机器学习,包括加载波士顿房价数据集,使用线性回归和SVM、KNN等模型,进行训练和预测。还涉及到模型保存、特征缩放、交叉验证以及模型评估,如得分计算。通过交叉验证探讨了KNN中邻居数对模型性能的影响,并展示了模型参数如系数和截距的获取。
摘要由CSDN通过智能技术生成

本文章主要记录学习sklearn笔记,分享出来,如有错误,欢迎指出
参考莫烦老师的sklearn教学视频整理的笔记,
相关链接如下:
Scikit-learn (sklearn) 优雅地学会机器学习

代码运行的python版本:3.7.1
使用jupyter notebook

流程:选择模型–fit–predict

选择模型:

导入模块和包

from sklearn import datasets
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.datasets.samples_generator import make_classification
from sklearn.svm import SVC
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import cross_val_score

加载数据

loaddata=datasets.load_boston()
data_X=loaddata.data
data_y=loaddata.target
#查看部分sample
data_X[:10,:]
#查看部分的target
data_y[:20]

加载数据格式 dataload=datasets.load_xx()
data表示样本,numpy.ndarray
target 表示数据结果(分类、回归等等)
在sklearn中有许多数据集 可以直接导入load 也可以使用代码随机产生
比如:

#创建regression数据
X,y=datasets.make_regression(n_samples=200,n_features=1,n_targets=1,noise=1)
plt.scatter(X,y)#查看数据 noise越小 代表数据越密集

在这里插入图片描述


X1,y1=datasets.make_regression(n_samples=200,n_features=1,n_targets=1,noise=10)
plt.scatter(X1,y1)

在这里插入图片描述

训练模型+预测模型

model=LinearRegression()
model.fit(data_X,data_y) #训练模型
#预测模型
pre=model.predict(data_X[:10,:]) #预测结果
print(pre)
data_y[:10] #真实结果
x=np.arange(10)
test=plt.scatter(x,pre)
plt.scatter(x,data_y[:10])

保存模型

#pickle
with open('save/clf.pickle','wb') as f:
    pickle.dump(clf,f)
with open('save/clf.pickle','rb') as f:
    clf2= pickle.load(f)
    print(clf2.predict(X[:1]))


######restore方式
from sklearn.externals import joblib
joblib.dump(clf,'save/clf_restore.pkl')
clf3=joblib.load('save/clf_restore.pkl')
clf3.predict(X[:1])

*************************分割线
模型的属性参数

print(model.coef_,model.intercept_)
print(model.get_params)
print(model.score(data_X,data_y)) #使用真实数据对预测的数据进行打分 

在这里插入图片描述

举例:y=0.1x+30
coef_ 表示0.1
model.intercept 表示与y轴的交点 30

特征缩放-归一化

from sklearn import preprocessing
import numpy as np
a=np.array([[10,2.7,3.6],
            [-11,5,-2],
            [120,20,40]])
a
preprocessing.scale(a)

交叉验证

#加载数据
iris=datasets.load_iris()
iris_X=iris.data #特征
iris_y=iris.target #目标
# print(iris_X[:5,:])
# print(iris_y) #每个花对应的类型
X_train,X_test,y_train,y_test=train_test_split(iris_X,iris_y,random_state=4)
knn=KNeighborsClassifier(n_neighbors=5) #临近的5个数据
scores=cross_val_score(knn,iris_X,iris_y,cv=5,scoring='accuracy')
scores.mean()

在这里插入图片描述

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')
    k_scores.append(scores.mean())
plt.plot(k_range,k_scores)  

在这里插入图片描述

cv=5,10 表示选择5,10次交叉验证

结束啦啦啦啦啦 ✿✿ヽ(°▽°)ノ✿ 下次再补充具体关于交叉验证的内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值