Python—实训day10—Matplotlib数据可视化和scikit-learn构建模型

1.Matplotlib数据可视化基础

import matplotlib.pyplot as plt

import numpy as np

plt.rcParams['font.sans-serif'] = 'SimHei'

#------------1散点图scatter

x = np.arange(0, 1, 0.05)

y = x**2

y1 = x**4

#散点图

plt.scatter(x, y)

plt.show() #显示图形

##----一张图

plt.figure(figsize=(8, 6)) #设置画布大小

plt.scatter(x, y)

plt.title('散点图') #标题

plt.xlabel('x') #x轴标签

plt.ylabel('y') #y轴标签

plt.xlim(0.2, 0.6) #x轴刻度范围

plt.ylim(0, 0.4) #y轴刻度范围

plt.show() #显示图形

##-----多图绘制

#第一步:设置画布和子图

fig = plt.figure(figsize=(12, 8)) #设置画布大小

fig.add_subplot(1, 2, 1) #子图1

#第二步:绘制图形

plt.scatter(x, y)

plt.title('y=x^2')

fig.add_subplot(1, 2, 2) #子图2

plt.scatter(x, y1)

plt.title('y=x^4')

#第三步:显示图形

plt.show() #显示图形

##----多个函数绘制在一张图中

plt.scatter(x, y)

plt.scatter(x, y1)

plt.legend(['y=x^2', 'y=x^4']) #添加图例

plt.show()

#------------2折线图plot

#折线图

plt.plot(x, y)

plt.show()

#丰富图形

plt.plot(x, y, c='r', linestyle='--', marker='*') #c设置线条颜色。linestyle设置线条类型。marker设置点的类型

plt.title('折线图') #标题

plt.xlabel('x') #x轴标签

plt.ylabel('y') #y轴标签

plt.show()

#绘制多图:散点图和折线图

##第一步:设置画布与子图

fig = plt.figure(figsize=(4, 8))

fig.add_subplot(2, 1, 1) #子图1

##第二步:绘制图形

plt.scatter(x, y)

fig.add_subplot(2, 1, 2) #子图2

plt.plot(x, y1)

##第三步:保存、显示图形(先保存后显示)

plt.savefig(r'F:\Desktop\a.png') #保存图形

plt.show()

#------------3直方图bar

data = [100, 170, 160, 250, 150, 160, 120]

label = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日']

plt.bar(range(len(data)), data)

plt.xticks(range(len(data)), label) #x轴刻度

plt.xlabel('星期') #x轴标签

plt.ylabel('销售额') #y轴标签

plt.title('本周销售额')

plt.show() #显示图形

#------------4饼图pie

#饼图

plt.pie(data)

plt.show()

#丰富图形

plt.pie(data, labels=label, autopct='%.2f%%') #labels设置每一项名称。autopct设置指定数值的显示方式

plt.title('本周销售额饼图')

plt.show()

#------------5箱线图boxplot

plt.boxplot(data)

plt.show()

#绘制多个箱子

data1 = [100, 170, 120, 200, 150, 160, 120]

plt.boxplot([data, data1])

plt.show()

2.使用scikit-learn构建模型

#==================1使用sklearn转换器处理数据

#------------1.1加载datasets模块中数据集

from sklearn.datasets import load_boston #sklearn库安装命令:pip install scikit-learn -i https://mirrors.aliyun.com/pypi/simple

boston = load_boston() #加载波士顿房价数据

boston['data'] #特征数据

boston['target'] #标签数据

#------------1.2将数据集划分为训练集和测试集

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) #按8:2的比例划分为训练集和测试集

print('训练集的特征数据形状为:', X_train.shape)

print('测试集的特征数据形状为:', X_test.shape)

print('训练集的标签数据形状为:', y_train.shape)

print('测试集的标签数据形状为:', y_test.shape)

#------------1.3使用sklearn转换器进行数据预处理与降维

#----1.3.1预处理

#--离差标准化处理

from sklearn.preprocessing import MinMaxScaler

minmaxscaler = MinMaxScaler().fit(X_train) #提取特征,生成规则

X_train_scaler = minmaxscaler.transform(X_train) #转换特征,应用规则

X_test_scaler = minmaxscaler.transform(X_test) #转换特征,应用规则

#利用训练集生成规则,之后便可这个规则同时应用于训练集和测试集

#--标准差标准化处理

from sklearn.preprocessing import StandardScaler

standardscaler = StandardScaler().fit(X_train) #提取特征,生成规则

X_train_standard = standardscaler.transform(X_train) #转换特征,应用规则

X_test_standard = standardscaler.transform(X_test)

#----1.3.2降维

from sklearn.decomposition import PCA

pca = PCA(n_components=8).fit(X_train_standard) #生成规则

X_train_standard_8 = pca.transform(X_train_standard) #应用规则

X_test_standard_8 = pca.transform(X_test_standard)

print('X_train_standard_8的形状为:', X_train_standard_8.shape)

print('X_test_standard_8的形状为:', X_test_standard_8.shape)

#==================2构建并评价聚类模型

from sklearn.datasets import load_iris

from sklearn.cluster import KMeans

import matplotlib.pyplot as plt

from sklearn.metrics import calinski_harabasz_score

iris = load_iris() #加载鸢尾花数据

data = iris['data'] #特征数据

#构建KMeans模型并训练

model = KMeans(n_clusters=3).fit(data)

model.labels_ #聚类标签

model.cluster_centers_ #聚类中心

#聚类可视化

plt.scatter(data[model.labels_==0, 0], data[model.labels_==0, 1])

plt.scatter(data[model.labels_==1, 0], data[model.labels_==1, 1])

plt.scatter(data[model.labels_==2, 0], data[model.labels_==2, 1])

plt.legend([0, 1, 2])

plt.show()

#指数评价法

calinski_harabasz_score(data, model.labels_)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值