python数据分析与应用笔记

使用sklearn构建模型

1.使用sklearn转换器处理数据

import numpy as np
from sklearn.datasets import load_breast_cancer
from sklearn.preprocessing import MinMaxScaler #该函数时对数据做标准化处理
from sklearn.decomposition import PCA #该函数时对数据进行降维处理
from sklearn.model_selection import train_test_split #该函数是对数据做训练集和测试集的划分
cancer = load_breast_cancer() #将数据集赋值给cancer变量
cancer_data = cancer['data'] #提取数据集中的数据
cancer_target = cancer['target'] #提取数据集中的标签
cancer_names = cancer['feature_names'] #查看特征数目
cancer_desc = cancer['DESCR'] #划分训练集和测试集,其中20%的作为测试集
cancer_train_data,cancer_test_data,cancer_train_target,cancer_test_target = train_test_split(cancer_data,cancer_target,test_size = 0.2,random_state = 42)
scaler = MinMaxScaler().fit(cancer_train_data) #生成规则
# 将规则应用于训练集和测试集
cancer_trainScaler = scaler.transform(cancer_train_data)
cancer_testScaler = scaler.transform(cancer_test_data)
#构建pca降维模型
pca_model = PCA(n_components = 10).fit(cancer_trainScaler)
#将降维模型应用于标准化之后的训练数据和测试数据
cancer_trainPca = pca_model.transform(cancer_trainScaler)
cancer_testPca = pca_model.transform(cancer_testScaler) print('降维前训练数据的形状:',cancer_trainScaler.shape)
print('降维后训练数据的形状:',cancer_trainPca.shape)
print('降维前测试数据的形状:',cancer_testScaler.shape)
print('降维后测试数据的形状:',cancer_testPca.shape)
降维前训练数据的形状: (455, 30)
降维后训练数据的形状: (455, 10)
降维前测试数据的形状: (114, 30)
降维后测试数据的形状: (114, 10)
  • 任务:使用sklearn实现数据处理和降维操作
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
boston = load_boston()
boston_data = boston['data']
boston_target = boston['target']
boston_names = boston['feature_names']
boston_train_data,boston_test_data,boston_train_target,boston_test_target = train_test_split(boston_data,boston_target,test_size = 0.2,random_state = 42)
stdScale = StandardScaler().fit(boston_train_data)
boston_trainScaler = stdScale.transform(boston_train_data)
boston_testScaler = stdScale.transform(boston_test_data) pca_model = PCA(n_components = 5).fit(boston_trainScaler)
boston_trainPca = pca_model.transform(boston_trainScaler)
boston_testPca = pca_model.transform(boston_testScaler)

2.构建并评价聚类模型

常用的聚类算法如表所示:



sklearn常用的聚类算法模块cluster提供的聚类算法及其适用范围如图:

import pandas as pd
from sklearn.manifold import TSNE #TSNE函数可实现多维数据的可视化展现
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.preprocessing import MinMaxScaler
from sklearn.cluster import KMeans
iris = load_iris()
iris_data = iris['data']
iris_target = iris['target']
iris_names = iris['feature_names']
scale = MinMaxScaler().fit(iris_data) #构建规则
iris_dataScale = scale.transform(iris_data) #将规则应用于数据
kmeans = KMeans(n_clusters = 3,random_state = 123).fit(iris_dataScale) #构建并训练聚类模型
result = kmeans.predict([[1.5,1.5,1.5,1.5]]) #用模型进行预测 tsne = TSNE(n_components = 2,init = 'random',random_state=177).fit(iris_data) #使用TSNE对数据进行降维,降成两维
df = pd.DataFrame(tsne.embedding_) #将原始数据转化为DataFrame
df['labels']=kmeans.labels_ #将聚类结果存储进df数据集 df1 = df[df['labels']==0]
df2 = df[df['labels']==1]
df3 = df[df['labels']==2] fig = plt.figure(figsize=(9,6))
plt.plot(df1[0],df1[1],'bo',df2[0],df2[1],'r*',df3[0],df3[1],'gD')
#plt.axis([-60,60,-80,80])
plt.savefig('聚类结果.png')
plt.show()
# print(df)
# print(df1)
# print(kmeans.labels_)
print(iris_names)

['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']

评价聚类模型

  • 标准是:组内相似性越大,组间差别越大,其聚类效果越好

    sklearn 的metrics模块提供的聚类模型评价指标有:



使用FMI评级法去评价K-Means聚类模型

from sklearn.metrics import fowlkes_mallows_score
for i in range(2,7):
kmeans = KMeans(n_clusters = i,random_state = 123).fit(iris_data)
score = fowlkes_mallows_score(iris_target,kmeans.labels_)
print('iris数据聚%d类FMI评价分值为:%f'%(i,score))
iris数据聚2类FMI评价分值为:0.750473
iris数据聚3类FMI评价分值为:0.820808
iris数据聚4类FMI评价分值为:0.753970
iris数据聚5类FMI评价分值为:0.725483
iris数据聚6类FMI评价分值为:0.600691

使用轮廓系数评价法

from sklearn.metrics import silhouette_score
import matplotlib.pyplot as plt
silhouettteScore = []
for i in range(2,15):
kmeans = KMeans(n_clusters = i,random_state = 123).fit(iris_data)
score = silhouette_score(iris_data,kmeans.labels_)
silhouettteScore.append(score)
plt.figure(figsize=(10,6))
plt.plot(range(2,15),silhouettteScore,linewidth = 1.5,linestyle = '-')
plt.show()

使用Calinski-Harabasz指数评价K-Means聚类模型

from sklearn.metrics import calinski_harabaz_score
for i in range(2,7):
kmeans = KMeans(n_clusters = i,random_state = 123).fit(iris_data)
score = calinski_harabaz_score(iris_data,kmeans.labels_)
print('iris数据聚%d类calinski_harabaz指数为:%f'%(i,score))
iris数据聚2类calinski_harabaz指数为:513.303843
iris数据聚3类calinski_harabaz指数为:560.399924
iris数据聚4类calinski_harabaz指数为:529.120719
iris数据聚5类calinski_harabaz指数为:494.094382
iris数据聚6类calinski_harabaz指数为:474.753604

python数据分析与应用的更多相关文章

  1. [Python数据分析]新股破板买入,赚钱几率如何?

    这是本人一直比较好奇的问题,网上没搜到,最近在看python数据分析,正好自己动手做一下试试.作者对于python是零基础,需要从头学起. 在写本文时,作者也没有完成这个小分析目标,边学边做吧. == ...

  2. 【Python数据分析】Python3多线程并发网络爬虫-以豆瓣图书Top250为例

    基于上两篇文章的工作 [Python数据分析]Python3操作Excel-以豆瓣图书Top250为例 [Python数据分析]Python3操作Excel(二) 一些问题的解决与优化 已经正确地实现 ...

  3. 【Python数据分析】Python3操作Excel(二) 一些问题的解决与优化

    继上一篇[Python数据分析]Python3操作Excel-以豆瓣图书Top250为例 对豆瓣图书Top250进行爬取以后,鉴于还有一些问题没有解决,所以进行了进一步的交流讨论,这期间得到了一只尼玛 ...

  4. 【搬砖】【Python数据分析】Pycharm中plot绘图不能显示出来

    最近在看<Python数据分析>这本书,而自己写代码一直用的是Pycharm,在练习的时候就碰到了plot()绘图不能显示出来的问题.网上翻了一下找到知乎上一篇回答,试了一下好像不行,而且 ...

  5. Python 数据分析(二 本实验将学习利用 Python 数据聚合与分组运算,时间序列,金融与经济数据应用等相关知识

    Python 数据分析(二) 本实验将学习利用 Python 数据聚合与分组运算,时间序列,金融与经济数据应用等相关知识 第1节 groupby 技术 第2节 数据聚合 第3节 分组级运算和转换 第4 ...

  6. Python数据分析(二): Numpy技巧 (1/4)

    In [1]: import numpy numpy.__version__ Out[1]: '1.13.1' In [2]: import numpy as np  

  7. Python数据分析(二): Numpy技巧 (2/4)

    numpy.pandas.matplotlib(+seaborn)是python数据分析/机器学习的基本工具. numpy的内容特别丰富,我这里只能介绍一下比较常见的方法和属性.   昨天晚上发了第一 ...

  8. Python数据分析(二): Numpy技巧 (3/4)

    numpy.pandas.matplotlib(+seaborn)是python数据分析/机器学习的基本工具. numpy的内容特别丰富,我这里只能介绍一下比较常见的方法和属性.   昨天晚上发了第一 ...

  9. Python数据分析(二): Numpy技巧 (4/4)

    numpy.pandas.matplotlib(+seaborn)是python数据分析/机器学习的基本工具. numpy的内容特别丰富,我这里只能介绍一下比较常见的方法和属性.   第一部分: ht ...

  10. 【读书笔记与思考】《python数据分析与挖掘实战》-张良均

    [读书笔记与思考]<python数据分析与挖掘实战>-张良均 最近看一些机器学习相关书籍,主要是为了拓宽视野.在阅读这本书前最吸引我的地方是实战篇,我通读全书后给我印象最深的还是实战篇.基 ...

随机推荐

  1. 2、Java基础:概念

    1.面向对象和面向过程的区别 面向过程 优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机.嵌入式开发.Linux/Unix等一般采用面向过程开发,性能是最重要的因素 ...

  2. cookie和session,sessionStorage、localStorage和cookie的区别

    1.cookie 含义: 存储在访问者的计算机中的变量,即存储在客户端 创建一个cookie /* getCookie方法判断document.cookie对象中是否存有cookie,若有则判断该co ...

  3. 什么是DDOS

    什么是DDOS?分布式拒绝服务攻击(Distributed Denial of Service).百度的解释有一个形象的例子我认为比较好理解,照搬如下:   一群恶霸试图让对面那家有着竞争关系的商铺无 ...

  4. css多行超出时,超出高度,显示省略号

    .layout display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden;

  5. Codeforces 853A Planning

    题意 给出飞机单位晚点时间代价和原定起飞时间,现在前k分钟不能起飞,求付出的最小代价和起飞顺序 思路 构造两个优先队列q1,q2,q1按时间顺序,q2按代价顺序,初始将所有飞机入q1,将时间在k前的飞 ...

  6. linux 安装 wkhtmltox

    linux安装wkhtmltox wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.4/wkhtmltox- ...

  7. 【异常】ser class threw exception: java.sql.SQLException: The last packet successfully received from the server was 39,444 milliseconds ago. The last

    1 详细异常 ser class threw exception: java.sql.SQLException: The last packet successfully received from ...

  8. 【问题】This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.

    转载请注明出处:https://www.cnblogs.com/kelamoyujuzhen/p/9087725.html  这类问题归根到底就是软件源问题,Linux下安装软件不像windows.L ...

  9. Mongo db 简单介绍及命令笔记

    首先来了解下什么是MongoDB ? MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统. 在高负载的情况下,添加更多的节点,可以保证服务器性能. MongoDB 旨在为W ...

  10. 【转】Elastic-Job

    https://www.cnblogs.com/yushangzuiyue/p/9655847.html 什么是Elastic-Job Elastic-Job是当当网大牛基于Zookepper,Qua ...