Python之数据挖掘实践--scikit learn库介绍和下载、实践、采坑
文章目录
- 前言
- A sklearn库是什么?
- A1 依赖库介绍
- 1.Numpy库
- 2.Scipy库
- 3. matplotlib
- A2 下载安装
- B 实践过程
- B1 主成分分析(PCA)
- B2 实现Kmeans算法
- C Debug报错问题
- C1 报错:ModuleNotFoundError: No module named matplotlib
- C2 报错:pip version 20.0.2
- 问题描述:
- 解决方法:([参考](https://blog.csdn.net/qq_40984307/article/details/106137603))
- C3 报错:多了空格
- D 数据来源
前言
数据挖掘小组实验计划将体测报告的数据通过一些聚类算法总结出某些定论,目前需要通过Python来实现。下面是笔者在Python环境下通过Pycharm的 sklearn 库来加载 Iris 数据集,并且使用matplotlib 进行数据可视化。
A sklearn库是什么?
- sklearn是scikit-learn的简称,是一个基于Python的第三方模块。sklearn库集成了一些常用的机器学习方法,在进行机器学习任务时,并不需要实现算法,只需要简单的调用sklearn库中提供的模块就能完成大多数的机器学习任务。
- sklearn库主要模块功能简介如下,这张图将sklearn的功能基本概括。
A1 依赖库介绍
sklearn库是在Numpy、Scipy和matplotlib的基础上开发而成的,因此在介绍sklearn的安装前,需要先安装这些依赖库。所以也简单介绍一下:
1.Numpy库
Numpy(Numerical Python的缩写)是一个开源的Python科学计算库。在Python中虽然提供了list容器和array模块,但这些结构并不适合于进行数值计算,因此需要借助于Numpy库创建常用的数据结构(如:多维数组,矩阵等)以及进行常用的科学计算(如:矩阵运算)。
2.Scipy库
Scipy库是sklearn库的基础,它是基于Numpy的一个集成了多种数学算法和函数的Python模块。它的不同子模块有不同的应用,如:积分、插值、优化和信号处理等。
3. matplotlib
matplotlib是基于Numpy的一套Python工具包,它提供了大量的数据绘图工具,主要用于绘制一些统计图形,将大量的数据转换成更加容易被接受的图表。(注意要先安装numpy再安装matplotlib库)
A2 下载安装
因此下载顺序如下:Numpy库、Scipy库、matplotlib库、sklearn库,具体教程参见:sklearn库的安装教程。
下载过程遇到一个小问题:pip升级19.3.1问题
解决方法比较简单,这里就不花时间跟CSDN的大家重复写教程了。
B 实践过程
B1 主成分分析(PCA)
主成分分析(Principal Component Analysis,PCA)是最常用的一种降维方法,通常用于高维数据集的探索与可视化,还可以用作数据压缩和预处理等。矩阵的主成分就是其协方差矩阵对应的特征向量,按照对应的特征值大小进行排序,最大的特征值就是第一主成分,其次是第二主成分,以此类推。
首先要了解下主成分分析的基本步骤:
我们通过Python的sklearn库来实现鸢尾花数据进行降维,数据本身是4维的降维后变成2维,可以在平面中画出样本点的分布。样本数据结构如下图:
代码部分
import matplotlib.pyplot as plt # 加载matplotlib用于数据的可视化
from sklearn.decomposition import PCA # 加载PCA算法包
from sklearn.datasets import load_irisdata = load_iris()
y = data.target
x = data.data
pca = PCA(n_components=2) # 加载PCA算法,设置降维后主成分数目为2
reduced_x = pca.fit_transform(x) # 对样本进行降维
red_x, red_y = [], []
blue_x, blue_y = [], []
green_x, green_y = [], []for i in range(len(reduced_x)):if y[i] == 0:red_x.append(reduced_x[i][0])red_y.append(reduced_x[i][1])elif y[i] == 1:blue_x.append(reduced_x[i][0])blue_y.append(reduced_x[i][1])else:green_x.append(reduced_x[i][0])green_y.append(reduced_x[i][1])
# 可视化
plt.scatter(red_x, red_y, c='r', marker='x')
plt.scatter(blue_x, blue_y, c='b', marker='D')
plt.scatter(green_x, green_y, c='g', marker='.')
plt.show()
最后结果如下图:
B2 实现Kmeans算法
在机器学习的任务中有一个非常重要的任务就是对样本进行聚类,聚类的方法有很多,本文讲述的是通过使用sklearn库在python中实现kmeans算法。
kmeans是一种无监督的算法,它的步骤如下:
1.随机选择k个点作为初始的聚类中心;
2.对于剩下的点,根据其与聚类中心的距离,将其归入最近的簇
3.对每个簇,计算所有点的均值作为新的聚类中心
4.重复2、3直到聚类中心不再发生改变
接下来会说一下如何通过代码实现这个问题:
import numpy as np
from sklearn.cluster import KMeans #导入sklearn相关包
加载数据,创建K-means算法实例,并进行训练,获得聚类后的标签
if __name__ == '__main__':data,cityName = loadData('city.txt') #下载样本km = KMeans(n_clusters=4) #聚类中心为4label = km.fit_predict(data) #得到聚类后的标签expenses = np.sum(km.cluster_centers_,axis=1) #按行求和
输出标签,查看结果
CityCluster = [[],[],[],[]]for i in range(len(cityName)):CityCluster[label[i]].append(cityName[i])for i in range(len(CityCluster)):print("Expenses:%.2f" % expenses[i])print(CityCluster[i])
C Debug报错问题
C1 报错:ModuleNotFoundError: No module named matplotlib
方法一:ModuleNotFoundError: No module named matplotlib 问题解决方案
方法二:
https://www.pianshen.com/article/59589674/
我是通过第二种方法解决的。
C2 报错:pip version 20.0.2
问题描述:
You are using pip version 20.0.2, however version 20.1 is available
这个意思也就是说我们pip版本有最新的需要我们进行更新。
解决方法:(参考)
pip install --upgrade pip
pip3 install --user --upgrade pip
也就是you should consider upgrading via the 后面的命令
python3 -m pip install pip==版本号
C3 报错:多了空格
特别测试了一下
解释:python是采用冒号+缩进来标示代码块,谨防忘记缩进,避免不必要的缩进,并且同级代码的缩进必须相同,不能多也不能少。谨记Tab和空格不要混用,否则性命难保!
D 数据来源
在上面使用kmeans算法时候需要用到数据集,就特别往这个方向查了一下,工作室小伙伴推荐的两个b站视频,讲得还是挺全,链接附下,下面也简单列了一些自己比较常用的
- 这视频能帮你找到所有想要的数据!
- 你真的会查资料、找数据吗?看这一篇就够了
第一类 中国全国数据
- 国务院
- 国家统计局
第二类 中国地方数据
- 地方统计局导航
- 省份/城市+数据开放
第三类 行业数据
- 行业协会(如中国汽车工业协会)
第四类 其他国家数据
- 其他国家统计局导航
- 世界数据集整合
第五类 全球数据
- 国际组织导航(国家统计局有入口)
第六类 数据整合平台
- 知网–年鉴()
第七类 其他特色数据
- 房天下
- 高德地图--------各城市
- 艺恩猫眼--------电影数据
- HiPPTer
Python之数据挖掘实践--scikit learn库介绍和下载、实践、采坑相关推荐
- python笔迹识别_python_基于Scikit learn库中KNN,SVM算法的笔迹识别
之前我们用自己写KNN算法[网址]识别了MNIST手写识别数据 [数据下载地址] 这里介绍,如何运用Scikit learn库中的KNN,SVM算法进行笔迹识别. 数据说明: 数据共有785列,第一列 ...
- python 图片库_Python开发之千库网图片下载助手
千库网图片下载助手开发 我是一个很爱美的人,写文章喜欢带点插图. 另外我也有一个VX公众账号,写推文总需要点封面图片和插图的嘛,为了看起来更加美观和优雅. 为此我在网上找了写图片,但是直接通过右键下载 ...
- Python学习-8.2 库(第三方库介绍与下载安装)
一.第三方库内容介绍 3.1.网络爬虫 网络爬虫是自动进行HTTP访问并捕获HTML页面的程序 requests库 是一个简洁且简单的处理HTTP请求的第三方库.优点:程序编写过程更接近正常URL访问 ...
- python第三方库下载-python常用第三方库介绍及下载
GUI 1.wxpython(2.9.2.4--python2.6/2.7) Python下的GUI编程框架,与MFC的架构相似 2.PyQt(4.86--python2.5~3.2) 用于Pytho ...
- C++最佳实践之常用库介绍
C++的常用库包括:algorithm.chrono.iostream.future.memory.map.queue.unordered_map.regex.set.string.sstream.s ...
- 技能 | Python处理图像10大经典库(附下载地址)
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 1.scikit Image scikit-image是一个与nu ...
- 机器学习与Scikit Learn学习库
摘要: 本文介绍机器学习相关的学习库Scikit Learn,包含其安装及具体识别手写体数字案例,适合机器学习初学者入门Scikit Learn. 在我科研的时候,机器学习(ML)是计算机科学领域中最 ...
- 【scikit-learn】如何用Python和SciKit Learn 0.18实现神经网络
本教程的代码和数据来自于 Springboard 的博客教程.本文的作者为 Jose Portilla,他是网络教育平台 Udemy 一门数据科学类课程的讲师. GitHub 链接:https://g ...
- python scikit learn 关闭开源_scikit learn 里没有神经网络?
本教程的代码和数据来自于 Springboard 的博客教程,希望能为你提供帮助.作者为 Jose Portilla,他是网络教育平台 Udemy 一门数据科学类课程的讲师. GitHub 链接:ht ...
最新文章
- JAVA模拟某信网登录信息采集
- did双重差分法_互助问答第252期:双重差分平行趋势检验等问题
- Mysql学习总结(25)——MySQL外连接查询
- 卧式储罐液位体积计算公式excel_ELL外测式液位计在氢氟酸储罐上的实际应用
- Java黑皮书课后题第10章:*10.10(Queue类)10.6节给出一个Stock类。设计一个名为Queue的类用于存储整数。像栈一样,队列保存元素。在栈中,元素后进先出。队列中元素先进先出
- Ext 组件的一些操作
- 饭后什么事情正谋杀你的健康
- 新自动化文档生成-go语言-docx生成
- LNMP编译安装基于centos7.2
- Storm【实践系列-如何写一个爬虫-】6 URLInjector
- MATLAB-阶乘运算
- CVBS视频信号解析
- 微信小程序的点击、双击、长按事件
- Excel绘制统计图
- 那些年,和女孩们同居的日子
- 脚踏实地,不要飘忽不定
- Android文件存储编程实验,Android编程中File文件常见存储与读取操作demo示例
- gitlab 配https_gitlab容器--带https配置
- 合并高德、飞猪重组本地生活,阿里还没放弃与美团的正面battle?
- 算术移位 VS 逻辑移位