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. 在CentOS部署AspNetCore网站

    前段时间某云服务器大促,就买了一台打算折腾一下,买了几个月,却啥也没做,就改了个初始密码.最近快到双十一了,另一家厂商相同配置的服务器价格又便宜了一大截,看来又得剁手了.从今年开始,搜索一下云服务器, ...

  2. c++-01--迭代器

    迭代器的概念 除了在其它语言中司空见惯的下标法访问容器元素之外,C++ 语言提供了一种全新的方法——迭代器(iterator)来访问容器的元素.迭代器其实类似于引用,指向容器中某一元素.迭代器(ite ...

  3. 【推荐】 Neutralizer 安卓上特殊的均衡器

    首先 直切正题 这个均衡器特殊就特殊在   会产生  特定频率的声音   根据声音来调整  自己喜欢的声音 下载地址: https://d-02.apkplz.org/dl.php?s=czlDeEt ...

  4. MMU简介

    MMU(Memory Management Unit)内存管理单元 负责虚拟地址到物理地址的映射,并提供硬件机制的内存访问权限检查.内存访问权限的检查可以保护每个进程所用的内存不会被其他进程所破坏 地 ...

  5. swoole深入学习 8. 协程 转

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/yangyi2083334/article/ ...

  6. pcntl

    <?php function my_pcntl_wait($childProcessCode){ $pid = pcntl_fork(); if($pid>0){ pcntl_wait($ ...

  7. zabbix-通过自动发现添加主机

    当生产环境中需要监控海量的机器的时候,特别是像58.赶集这类同城性质的大网站,或者京东.阿里云这样的造节电商,每次活动.大促都需要添加很多机器来应对海量用户流量,每天都有可能上架新的机器.或者添加新的 ...

  8. python连接impala时,执行SQL报错expecting list of size 2 for struct args

    这个错误困扰了好久,因为集群有多台,暂放到其他几台机器上执行了SQL操作,一直在找解决方法,无意间得到真传,喜出望外啊 报错信息: Traceback (most recent call last): ...

  9. wakelock查看

    Android的wakelock分为两层 待机异常https://wenku.baidu.com/view/6b765c8802020740be1e9bd8.html Linux层和应用层 查看Lin ...

  10. http服务详解(3)

    https https:http over sslSSL会话的简化过程 (1) 客户端发送可供选择的加密方式,并向服务器请求证书 (2) 服务器端发送证书以及选定的加密方式给客户端 (3) 客户端取得 ...