Python的机器学习库之Sklearn快速入门1.基本概述2.入门实践3.部分结果
时间:2022-05-08
本文章向大家介绍Python的机器学习库之Sklearn快速入门1.基本概述2.入门实践3.部分结果,主要内容包括1.基本概述、2.入门实践、3.部分结果、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
1.基本概述
- Scikit-learn 也简称 Sklearn, 是机器学习领域当中最知名的 python 模块之一. Sklearn 包含了很多种机器学习的方式:
- Classification 分类
- Regression 回归
- Clustering 非监督分类
- Dimensionality reduction 数据降维
- Model Selection 模型选择
- Preprocessing 数据预处理
2.入门实践
# utf-8
from sklearn import datasets
from sklearn.cross_validation import train_test_split,cross_val_score
from sklearn.neighbors import KNeighborsClassifier
from sklearn.linear_model import LinearRegression
from sklearn.svm import SVC
from sklearn import preprocessing
from sklearn.learning_curve import validation_curve
import matplotlib.pyplot as plt
import numpy as np
def knn_test():
'''
knn实现iris的分类
'''
iris = datasets.load_iris()
iris_x = iris.data
iris_y = iris.target
# print(iris_x[:10])
# print(iris_y[:10])
x_train, x_test, y_train, y_test = train_test_split(
iris_x[:100], iris_y[:100], test_size=0.3)
print(y_train)
knn = KNeighborsClassifier()
knn.fit(x_train, y_train)
print(knn.predict(x_test))
print(y_test)
def knn_test2():
'''
knn实现iris的分类,并且使用交叉验证,并且划分成多次进行交叉验证,得到一个准确度列表scores
'''
iris = datasets.load_iris()
iris_x = iris.data
iris_y = iris.target
x_train, x_test, y_train, y_test = train_test_split(iris_x[:100], iris_y[:100], test_size=0.3)
knn=KNeighborsClassifier(n_neighbors=5)
scores=cross_val_score(knn,iris_x,iris_y,cv=5,scoring='accuracy')#cross_val_score for classfication
print(scores)
def linear_test():
'''
生成数据,使用linear regression实现回归,画图
'''
# boston = datasets.load_boston()
# x = boston.data
# y = boston.target
x, y = datasets.make_regression(n_samples=50, n_features=1, noise=1)
x_train, x_test, y_train, y_test = train_test_split(
x[:100], y[:100], test_size=0.3)
linear = LinearRegression()
linear.fit(x_train, y_train)
linear.predict(x[:4])
print(linear.score(x_test, y_test))
plt.scatter(x, y)
plt.show()
def normalization():
'''
归一化(正则化),使用svm进行分类,并画图比较正则化前后的准确率
'''
x, y = datasets.make_classification(n_samples=300, n_features=2, n_redundant=0,
n_informative=1, random_state=22, n_clusters_per_class=1, scale=100)
x_train, x_test, y_train, y_test = train_test_split(
x[:100], y[:100], test_size=0.3)
model = SVC()
model.fit(x_train, y_train)
score1=model.score(x_test,y_test)
# print(x[:5], y[:5])
plt.subplot(121)
plt.scatter(x[:, 0], x[:, 1], c=y)
x = preprocessing.scale(x)
y = preprocessing.scale(y)
x_train, x_test, y_train, y_test = train_test_split(
x[:100], y[:100], test_size=0.3)
model = SVC()
model.fit(x_train, y_train)
score2=model.score(x_test,y_test)
# print(x[:5], y[:5])
plt.subplot(122)
plt.scatter(x[:, 0], x[:, 1], c=y)
print('precision:',score1)
print('precision:',score2)
plt.show()
def param_select():
'''
选择合适的knn参数k,分别在分类、回归
'''
iris = datasets.load_iris()
x = iris.data
y = iris.target
k_range=range(1,30)
k_scores=[]
for k in k_range:
knn=KNeighborsClassifier(n_neighbors=k)
#loss=-cross_val_score(knn,x,y,cv=10,scoring="mean_squared_error")# for regression
# k_scores.append(loss.mean())
scores = cross_val_score(
knn, x, y, cv=10, scoring='accuracy') # for classification
k_scores.append(scores.mean())
plt.plot(k_range,k_scores)
plt.xlabel('value of k for knn')
# plt.ylabel('crowss validated loss')
plt.ylabel('crowss validated accuracy')
plt.show()
def validation_curve_test():
'''
使用validation curve观察学习曲线,此处展示了过拟合的情况
'''
digits=datasets.load_digits()
x=digits.data
y=digits.target
model=SVC()
param_range=np.logspace(-6,-2.3,5)
train_loss,test_loss=validation_curve(model,x,y,param_name='gamma',param_range=param_range,cv=10,scoring='mean_squared_error')#数据大小,训练曲线、测试曲线
train_loss_mean=-np.mean(train_loss,axis=1)
test_loss_mean=-np.mean(test_loss,axis=1)
plt.plot(param_range,train_loss_mean,label='train')
plt.plot(param_range,test_loss_mean,label='cross-validation')
plt.xlabel('gamma')
plt.ylabel('Loss')
plt.legend(loc='best')
plt.show()
if __name__ == '__main__':
# knn_test()
# linear_test()
# normalization()
# knn_test2()
# param_select()
# validation_curve_test()
3.部分结果
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 一个案例搞懂原码、反码、补码,不懂得请看过来
- 人人都在用,但你却不知道它背后发生了什么——浏览器的工作原理:浏览器幕后揭秘
- 这有一把钥匙,打开MySQL死锁问题!
- 普通人如何全面了解大数据的特点,意义和发展前景
- 面试官问我Linux下常见网络命令
- 最全常用User-Agent
- 聊到JVM(还怕面试官问JVM吗?)
- Android.location.Address类方法获取GPS定位信息
- Python二叉树详解笔记
- 《剑指offer》第七天:二叉树的下一个结点
- 后台登录微信并定时发送消息,消息包括农历、阴历、天气;自动监测是否断线,支持邮箱发送二维码登录;适合于挂在服务器上运行
- 《剑指offer》第八天:二叉树的下一个结点
- 基于python和OpenCV构建智能停车系统
- nvm管理工具
- 基于OpenCV的图像卡通化