bilibili莫烦scikit-learn视频学习笔记

1.使用KNN对iris数据分类

  1. from sklearn import datasets
  2. from sklearn.model_selection import train_test_split
  3. from sklearn.neighbors import KNeighborsClassifier
  4.  
  5. # 从datasets中导入iris数据,包含150条样本,每条样本4个feature
  6. iris_data = datasets.load_iris()
  7. # 获取feature
  8. iris_x = iris_data.data
  9. # 获取标签
  10. iris_y = iris_data.target
  11. print(iris_x.shape)
  12. print(iris_y)
  13. # 将数据集分为训练集和测试集,比例是70%:30%
  14. train_x, test_x, train_y, test_y = train_test_split(iris_x, iris_y, test_size=0.3)
  15. # 使用knn分类器(n_neighbors表示通过附近的几个邻居来确定分类,一般为单数)
  16. knn = KNeighborsClassifier(n_neighbors = 5)
  17. # 训练
  18. knn.fit(train_x, train_y)
  19. # 测试
  20. print(knn.predict(test_x))
  21. print(test_y)

2.使用线性回归预测Boston房价

  1. from sklearn import datasets
  2. from sklearn.linear_model import LinearRegression
  3.  
  4. # 从datasets中载入Boston房价数据集
  5. loaded_data = datasets.load_boston()
  6. # 包含506条样本,每条样本13个feature
  7. data_x = loaded_data.data
  8. # 标签,即房价(万)
  9. data_y = loaded_data.target
  10.  
  11. # 线性回归器
  12. lr = LinearRegression()
  13. # 训练
  14. lr.fit(data_x, data_y)
  15. # 预测前6条样本的房价
  16. print(lr.predict(data_x[:6, :]))
  17. # 与标签对比,可以看出准确度
  18. print(data_y[:6])

3.如何创建线性数据(实验数据)

  1. from sklearn import datasets
  2. import matplotlib.pyplot as plt
  3.  
  4. # 使用make_regression函数生成线性回归数据集,100个样本,1个feature,noise控制噪声即偏移度
  5. made_data_x, made_data_y = datasets.make_regression(n_samples=100, n_features=1, n_targets=1, noise=30)
  6. # 使用matplotlib画散点图
  7. plt.scatter(made_data_x, made_data_y)
  8. # 显示图像
  9. plt.show()
  10.  
  11. # 使用线性回归器来进行训练和预测
  12. lr = LinearRegression()
  13. lr.fit(made_data_x, made_data_y)
  14. print(lr.predict(made_data_x[:5, :]))
  15. print(made_data_y[:5])
  16. # 打印学习到的参数集,y = wx + b
  17. print(lr.coef_) # output w,w是一个向量,数量和n_features一致
  18. print(lr.intercept_) # output b,b即bias

4.输出模型的一些参数

  1. # 打印学习到的参数集,y = wx + b
  2. print(lr.coef_) # output w,w是一个向量,数量和n_features一致,w = [28.44936087]
  3. print(lr.intercept_) # output b,b即bias = -2.787101732423871
  4. # 打印LinearRegression的参数值,未手工设置则打印默认参数
  5. print(lr.get_params()) # 打印{'copy_X': True, 'fit_intercept': True, 'n_jobs': 1, 'normalize': False}
  6. # 使用数据进行测试,并打分,在回归中使用R^2 coefficient of determination
  7. print(lr.score(test_x, test_y))

5.使用SVC进行分类(数据伸缩)

  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3.  
  4. from sklearn import preprocessing
  5. from sklearn.model_selection import train_test_split
  6. from sklearn.datasets.samples_generator import make_classification
  7. # 从svm模块中导入support vector classifier
  8. from sklearn.svm import SVC
  9.  
  10. # 创建数据集
  11. X, y = make_classification(n_samples=3000, n_features=2, n_redundant=0, n_informative=2, random_state=22,
  12. n_clusters_per_class=1, scale=100)
  13. # 画图c=y的意思是颜色根据y来区分
  14. plt.scatter(X[:, 0], X[:, 1], c=y)
  15. plt.show()
  16.  
  17. # 将数据伸缩为[0,1]
  18. scales_x = preprocessing.scale(X)
  19. # 伸缩后的数据方差为1.0
  20. print(np.std(scales_x))
  21.  
  22. # 使用SVC分类器分类
  23. train_x, test_x, train_y, test_y = train_test_split(scales_x, y, test_size=0.3)
  24. model = SVC()
  25. model.fit(train_x, train_y)
  26. # 模型分类准确率大概为0.90
  27. print(model.score(test_x, test_y))

6.KNN分类iris,交叉验证,参数选择并可视化

  1. import matplotlib.pyplot as plt
  2. from sklearn import datasets
  3. from sklearn.neighbors import KNeighborsClassifier
  4. # 导入交叉验证
  5. from sklearn.model_selection import cross_val_score
  6.  
  7. # 从datasets中导入iris数据,包含150条样本,每条样本4个feature
  8. iris_data = datasets.load_iris()
  9. iris_x = iris_data.data
  10. iris_y = iris_data.target
  11.  
  12. # 尝试n_neighbors为不同值时,模型准确度
  13. nb = range(1, 31)
  14. # 保存每次n_neighbors对应准确率,用于plt画图
  15. k_scores = []
  16. for k in nb:
  17. # 使用KNN模型
  18. knn = KNeighborsClassifier(n_neighbors=k)
  19. # 使用交叉验证,不需要自己去切分数据集,也不需要knn.fit()和knn.predict(),cv=5表示交叉验证5组
  20. scores = cross_val_score(knn, iris_x, iris_y, cv=5, scoring='accuracy')
  21. # 取交叉验证集的平均值
  22. k_scores.append(scores.mean())
  23.  
  24. # 画出n_neighbor于accuracy的关系图
  25. plt.plot(nb,k_scores)
  26. plt.xlabel("Value of n_neighbors")
  27. plt.ylabel("Value of Accuracy")
  28. plt.show()

7.使用交叉验证,并画出学习曲线learning_curve,用于观察模型拟合情况

  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3.  
  4. # 导入sklearn提供的损失曲线
  5. from sklearn.model_selection import learning_curve
  6. from sklearn.datasets import load_digits
  7. from sklearn.svm import SVC
  8.  
  9. # 导入数据
  10. digits = load_digits()
  11. X = digits.data
  12. y = digits.target
  13.  
  14. # 使用学习曲线获取每个阶段的训练损失和交叉测试损失,train_sizes表示各个不同阶段,从10%到100%
  15. train_sizes, train_loss, test_loss = learning_curve(
  16. SVC(gamma=0.001), X, y, cv=10, scoring='neg_mean_squared_error',
  17. train_sizes=np.linspace(0.1, 1, 10)
  18. )
  19.  
  20. # 将每次训练集交叉验证(10个损失值,因为cv=10)取平均值
  21. train_loss_mean = -np.mean(train_loss, axis=1)
  22. print(train_loss_mean)
  23. # 将每次测试集交叉验证取平均值
  24. test_loss_mean = -np.mean(test_loss, axis=1)
  25. print(test_loss_mean)
  26. # 画图,红色是训练平均损失值,绿色是测试平均损失值
  27. plt.plot(train_sizes, train_loss_mean, 'o-', color='r', label='Training')
  28. plt.plot(train_sizes, test_loss_mean, 'o-', color='g', label='Cross_validation')
  29. plt.xlabel('Train sizes')
  30. plt.ylabel('Loss')
  31. plt.show()

8.使用交叉验证,并画出验证曲线validation_curve,用于观察模型参数不同时的准确率

  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3.  
  4. # 导入sklearn提供的验证曲线
  5. from sklearn.model_selection import validation_curve
  6. from sklearn.datasets import load_digits
  7. from sklearn.svm import SVC
  8.  
  9. # 导入数据
  10. digits = load_digits()
  11. X = digits.data
  12. y = digits.target
  13.  
  14. # SVC参数gamma的范围
  15. param_range = np.logspace(-6, -2.3, 5)
  16.  
  17. # 使用validation曲线,指定params的名字和范围
  18. train_loss, test_loss = validation_curve(
  19. SVC(), X, y, param_name='gamma', param_range=param_range, cv=10, scoring='neg_mean_squared_error'
  20. )
  21.  
  22. # 将每次训练集交叉验证(10个损失值,因为cv=10)取平均值
  23. train_loss_mean = -np.mean(train_loss, axis=1)
  24. print(train_loss_mean)
  25. # 将每次测试集交叉验证取平均值
  26. test_loss_mean = -np.mean(test_loss, axis=1)
  27. print(test_loss_mean)
  28. # 画图,红色是训练平均损失值,绿色是测试平均损失值,注意这里的x坐标是param_range
  29. plt.plot(param_range, train_loss_mean, 'o-', color='r', label='Training')
  30. plt.plot(param_range, test_loss_mean, 'o-', color='g', label='Cross_validation')
  31. plt.xlabel('Gamma')
  32. plt.ylabel('Loss')
  33. plt.show()

9.使用pickle保存模型到文件

  1. import pickle
  2. from sklearn.datasets import load_iris
  3. from sklearn.svm import SVC
  4.  
  5. iris = load_iris()
  6. X = iris.data
  7. y = iris.target
  8.  
  9. # # 使用SVC模型
  10. # model = SVC()
  11. # # 训练模型
  12. # model.fit(X,y)
  13. # # 使用pickle保存模型到文件中
  14. # with open('save/model.pickle','wb') as fp:
  15. # pickle.dump(model,fp)
  16.  
  17. # 从文件中load模型
  18. with open('save/model.pickle', 'rb') as fp:
  19. model_read = pickle.load(fp)
  20.  
  21. # 使用load出的模型预测
  22. print(model_read.predict(X[0:1]))

10.使用joblib保存模型到文件

  1. from sklearn.datasets import load_iris
  2. from sklearn.svm import SVC
  3. # 导入外部模块中得joblib用于存储模型
  4. from sklearn.externals import joblib
  5.  
  6. iris = load_iris()
  7. X = iris.data
  8. y = iris.target
  9.  
  10. # # 使用SVC模型
  11. # model = SVC()
  12. # # 训练模型
  13. # model.fit(X,y)
  14. # # 使用joblib存放模型到model.jl中
  15. # joblib.dump(model,'save/model.jl')
  16.  
  17. # 从model.jl中读取模型
  18. model_read = joblib.load('save/model.jl')
  19. # 用load的模型预测
  20. print(model_read.predict(X[0:1]))

scikit-learn学习笔记-bili莫烦的更多相关文章

  1. tensorflow学习笔记-bili莫烦

    bilibili莫烦tensorflow视频教程学习笔记 1.初次使用Tensorflow实现一元线性回归 # 屏蔽警告 import os os.environ[' import numpy as ...

  2. keras学习笔记-bili莫烦

    一.keras的backend设置 有两种方式: 1.修改JSON配置文件 修改~/.keras/keras.json文件内容为: { "iamge_dim_ordering":& ...

  3. 机器学习-scikit learn学习笔记

    scikit-learn官网:http://scikit-learn.org/stable/ 通常情况下,一个学习问题会包含一组学习样本数据,计算机通过对样本数据的学习,尝试对未知数据进行预测. 学习 ...

  4. Learning How to Learn学习笔记(转)

    add by zhj: 工作中提高自己水平的最重要的一点是——快速的学习能力.这篇文章就是探讨这个问题的,掌握了快速学习能力的规律,你自然就有了快速学习能力了. 原文:Learning How to ...

  5. 【pytorch】学习笔记(二)- Variable

    [pytorch]学习笔记(二)- Variable 学习链接自莫烦python 什么是Variable Variable就好像一个篮子,里面装着鸡蛋(Torch 的 Tensor),里面的鸡蛋数不断 ...

  6. 稍稍乱入的CNN,本文依然是学习周莫烦视频的笔记。

    稍稍乱入的CNN,本文依然是学习周莫烦视频的笔记. 还有 google 在 udacity 上的 CNN 教程. CNN(Convolutional Neural Networks) 卷积神经网络简单 ...

  7. 莫烦大大TensorFlow学习笔记(9)----可视化

      一.Matplotlib[结果可视化] #import os #os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' import tensorflow as tf i ...

  8. 莫烦pytorch学习笔记(八)——卷积神经网络(手写数字识别实现)

    莫烦视频网址 这个代码实现了预测和可视化 import os # third-party library import torch import torch.nn as nn import torch ...

  9. 莫烦pytorch学习笔记(七)——Optimizer优化器

    各种优化器的比较 莫烦的对各种优化通俗理解的视频 import torch import torch.utils.data as Data import torch.nn.functional as ...

随机推荐

  1. 写在使用 Linux 工作一年后

    start 去年公司空了几台台式机,当时看了下似乎配置比我用的乞丐版 air 略高一些,而且除了 ssd 以外还有一个 1T 的大硬盘,加上后面可能会有一段时间不做 iOS 了,那就不需要 macOS ...

  2. WPF 元素相对另外一个元素的 相对位置

    原文:WPF 元素相对另外一个元素的 相对位置 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/koloumi/article/details/740 ...

  3. eclipse中JUnit工具的使用

  4. 编码(encode)问题

    1. UTF-8 与 GBK UTF-8: 允许含 BOM,但通常不含 BOM 用以解决国际上字符的一种多字节编码, 英文:8 bits(1 byte) 中文:24 bits(3 bytes) UTF ...

  5. Leetcode 226 Invert Binary Tree 二叉树

    交换左右叶子节点 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * ...

  6. 3D场景中的鼠标响应事件

    原文:3D场景中的鼠标响应事件 今天要讲的是3D场景中的鼠标响应事件的处理,首先Button的响应是大家熟知的,只要加上一个click事件,然后写一个响应的处理时间就行了.对于二维平面上的一些控件也很 ...

  7. WPF 导出资源文件

    在wpf开发中我们可以把各种文件.图片打包到项目中也就是应用程序资源文件,然后在项目中可以通过特定的uri格式去调用.那有些时候为了方便我们可能想要在程序中将资源文件导出来使用,那么怎么做呢? 第 1 ...

  8. Angular route传参

    从 router-link-page1 跳转 router-link-page2 和 router-link-page3 通过自定义路由 设置router-link-page2的路由后有3个参数,pa ...

  9. 怎样开始GO编程?

    如果你想开始学习GO语法前,请先背熟下述4点: 1. 环境变量: 使用go env查看环境变量 GOARCH/GOHOSTARCH: 体系架构, amd64或386 GOOS/GOHOSTOS: 操作 ...

  10. 读BeautifulSoup官方文档之html树的搜索(2)

    除了find()和find_all(), 这里还提供了许多类似的方法我就细讲了, 参数和用法都差不多, 最后四个是next, previous是以.next/previous_element()来说的 ...