数据分析期末重点版

数据分析期末重点版

1、熟悉数据分析的常见应用场景、掌握数据分析的流程;

1.1数据分析的常见应用场景

\1. 客户分析

\2. 营销分析: 囊括了产品分析,价格分析,渠道分析,广告与促销分析这四类分析。

\3. 社交媒体分析

\4. 网络安全

\5. 设备管理

\6. 交通物流分析

\7. 欺诈行为检测

1.2数据分析的流程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-67dEW0Ap-1688019121050)(数据分析期末重点版.assets/image-20230628094909369.png)]

需求分析:数据分析中的需求分析也是数据分析环节的第一步和最重要的步骤之 一,决定了后续的分析的方向、方法。

数据获取:数据是数据分析工作的基础,是指根据需求分析的结果提取,收集数据。

数据预处理:数据预处理是指对数据进行数据合并,数据清洗,数据变换和数据 标准化,数据变换后使得整体数据变为干净整齐,可以直接用于分析建模这一过程的总称。

分析与建模:分析与建模是指通过对比分析、分组分析、交叉分析、回归分析等 分析方法和聚类、分类、关联规则、智能推荐等模型与算法发现数据中的有价值 信息,并得出结论的过程。

模型评价与优化:模型评价是指对已经建立的一个或多个模型,根据其模型的类 别,使用不同的指标评价其性能优劣的过程;模型优化则是指模型性能在经过模 型评价后已经达到了要求,但在实际生产环境应用过程中,发现模型的性能并不 理想,继而对对模型进行重构与优化的过程,多数情况下,模型优化和分析与建 模的过程基本一致。

部署:部署是指将通过了正式应用数据分析结果与结论应用至实际生产系统的过程。

2、能熟练掌握NumPy中面向结构化数组和缺失数据的读取文件的方式,并能查看相关数组属性、通过索引访问数组、矩阵运算及常用统计函数;

2.1NumPy中面向结构化数组和缺失数据的读取文件的方式

save函数是以二进制的格式保存数据。 np.save(“…/tmp/save_arr”,arr)

load函数是从二进制的文件中读取数据。 np.load(“…/tmp/save_arr.npy”)

savez函数可以将多个数组保存到一个文件中。 np.savez(‘…/tmp/savez_arr’,arr1,arr2)

存储时可以省略扩展名,但读取时不能省略扩展名。

savetxt函数是将数组写到某种分隔符隔开的文本文件中。 np.savetxt(“…/tmp/arr.txt”, arr, fmt=“%d”, delimiter=“,”)

loadtxt函数执行的是把文件加载到一个二维数组中。 np.loadtxt(“…/tmp/arr.txt”,delimiter=“,”)

genfromtxt函数面向的是结构化数组和缺失数据。 np.genfromtxt(“…/tmp/arr.txt”, delimiter = “,”)

2.2查看相关数组属性

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N4Bhranx-1688019121051)(数据分析期末重点版.assets/image-20230628100122610.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kRUEVGhx-1688019121051)(数据分析期末重点版.assets/image-20230628100156221.png)]

2.3通过索引访问数组

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cUGHcdPF-1688019121052)(数据分析期末重点版.assets/image-20230628100239466.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J0hEjI0N-1688019121052)(数据分析期末重点版.assets/image-20230628100251377.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qcpJxBHD-1688019121052)(数据分析期末重点版.assets/image-20230628100317091.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VVFUjrME-1688019121052)(数据分析期末重点版.assets/image-20230628100341613.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SVomcbok-1688019121053)(数据分析期末重点版.assets/image-20230628100400447.png)]

2.4矩阵运算

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ReN9Rtyc-1688019121053)(数据分析期末重点版.assets/image-20230628100427366.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nPFx1gVm-1688019121053)(数据分析期末重点版.assets/image-20230628100436586.png)]

2.5常用统计函数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c1VDRpPR-1688019121053)(数据分析期末重点版.assets/image-20230628102143877.png)]

读取iris数据集中的花萼长度数据(已保存为csv格式),并对其进行排序、去重 ,并求出和、累积和、均值、标准差、方差、最小值、最大值

iris_sepal_length = np.loadtxt("C:/Users/Desktop/txt.csv", 
    delimiter=",")  #读取文件
print('花萼长度表为:',iris_sepal_length)
iris_sepal_length.sort()  #对数据进行排序
print('排序后的花萼长度表为:',iris_sepal_length)

#去除重复值
print('去重后的花萼长度表为:',np.unique(iris_sepal_length))

print('花萼长度表的总和为:',np.sum(iris_sepal_length))  #计算数组总和

#计算所有元素的累计和
print('花萼长度表的累计和为:',np.cumsum(iris_sepal_length))

print('花萼长度表的均值为:',np.mean(iris_sepal_length))  #计算数组均值

#计算数组标准差
print('花萼长度表的标准差为:',np.std(iris_sepal_length))

print('花萼长度表的方差为:',np.var(iris_sepal_length))  #计算数组方差
print('花萼长度表的最小值为:',np.min(iris_sepal_length))  #计算最小值
print('花萼长度表的最大值为:',np.max(iris_sepal_length))  #计算最大值

3、熟练掌握Matplotlib绘图的流程、常用图形等;

3.1Matplotlib绘图的流程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dW75ZPu5-1688019121054)(数据分析期末重点版.assets/image-20230628102520408.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NvbSAClu-1688019121054)(数据分析期末重点版.assets/image-20230628102531465.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9RG7LQIU-1688019121054)(数据分析期末重点版.assets/image-20230628102537199.png)]

3.2常用图形:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DPvIKvBb-1688019121054)(数据分析期末重点版.assets/image-20230628102624567.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2tdiLbpR-1688019121055)(数据分析期末重点版.assets/image-20230628102634009.png)]

绘制2000-2017各产业与行业的国民生产总值散点图

国民生产总值数据总共有三大产业的国民 生产总值,以及农业、工业、建筑、批发、 交通、餐饮、金融、房地产和其他行业各 个季度的增加值。

通过散点图分析三大行业的国民生产总值 可以发现我国产业结构。通过比较各行业 间季度的增加值则可以发现国民经济的主 要贡献行业。

import matplotlib.pyplot as plt
import numpy as np

#################### 加载数据 ################

fp = np.load('./国民经济核算季度数据.npz', allow_pickle=True)
#  获取两个数据表
columns = fp['columns']
values = fp['values']
print('colums:\n', columns)
print('values:\n', values)

################### 绘图 #####################

# 默认不支持中文,需要进行修改,修改完后,不支持符号
plt.rcParams['font.sans-serif'] = 'SimHei'
# 增加字体之后变得不支持符号,需要吸怪RC参数让其他继续支持符号
plt.rcParams['axes.unicode_minus'] = False

# 1、创建画布

# 创建画布对象
fig = plt.figure(figsize=(8, 8))
plt.subplots_adjust(hspace=0.5)
# 2、绘制与修饰

# 创建图形 1
fig.add_subplot(2, 1, 1)

# 横轴--时间单位 先用序号替换,因为为中文
x = np.arange(values.shape[0])

# 纵轴-- 生产总值(亿元)
y1 = values[:, 3]  # 第一产业
y2 = values[:, 4]  # 第二产业
y3 = values[:, 5]  # 第三产业
plt.ylabel('生产总值(亿元)')

# 修改x轴,将序号替换成 时间
xticks = values[:, 1]
plt.xticks(x[::4], xticks[::4], rotation=45)

# 绘制图像
plt.scatter(x, y1, c='r', s=5)
plt.scatter(x, y2, c='b', s=5, marker='d')
plt.scatter(x, y3, c='y', s=5, marker='v')

# 标题
plt.title('2000-2017年各行产业增值离散图')

# 图例
lengend = [tmp[:4] for tmp in columns[3:6]]
plt.legend(lengend, fontsize=8)

# 创建图形 2
fig.add_subplot(2, 1, 2)

# 创建x轴 以行的索引,并且以时间中文替换
x = np.arange(values.shape[0])
xticks = values[:, 1]
plt.xticks(x[::4], xticks[::4], rotation=45)

# 创建y轴
y1 = values[:, 6]  # 农业
y2 = values[:, 7]  # 工业
y3 = values[:, 8]  # 建造
y4 = values[:, 9]  # 批发
y5 = values[:, 10]  # 交通
y6 = values[:, 11]  # 住宿
y7 = values[:, 12]  # 金融
y8 = values[:, 13]  # 房地
y9 = values[:, 14]  # 其它
# 绘制图形
plt.scatter(x, y1, c='r', s=5, marker='o')
plt.scatter(x, y2, c='b', s=5, marker='d')
plt.scatter(x, y3, c='y', s=5, marker='v')
plt.scatter(x, y4, c='c', s=5, marker='8')
plt.scatter(x, y5, c='k', s=5, marker='p')
plt.scatter(x, y6, c='m', s=5, marker='h')
plt.scatter(x, y7, c='r', s=5, marker='>')
plt.scatter(x, y8, c='g', s=5, marker='<')
plt.scatter(x, y9, c='y', s=5, marker='s')

# 图例
# legend = columns[6:]
legend = [tmp[:2] for tmp in columns[6:]]
plt.legend(legend, fontsize=5)

# 3、图形展示
plt.savefig('./各行产业增值离散图.png')
plt.show()

绘制2000-2017各产业与行业的国民生产总值折线图

通过绘制2000-2017各产业与行业的国 民生产总值折线图,分别能够发现我 国经济各产业与各行业增长趋势。

import matplotlib.pyplot as plt
import numpy as np

# 绘制 2000-2017年各产业、行业嫉妒生产增加总值发展趋势 “ 折线图 ”


# 加载数据
fp = np.load('./国民经济核算季度数据.npz', allow_pickle=True)

# 遍历键,获得数组名
for k in fp:
    print(k)

# 获取保存的数组
columns = fp['columns']
values = fp['values']
print('columns :\n', columns)
print('values :\n', values)

###########  绘制图形 ##########

# 1、创建画布
fig = plt.figure(figsize=(8,8))  # 返回画布对象
# fig = plt.figure(figsiez=(50,50),dpi=80)
# 默认不支持中文,需要进行修改,修改完后,不支持符号
plt.rcParams['font.sans-serif'] = 'SimHei'
# 增加字体之后变得不支持符号,需要吸怪RC参数让其他继续支持符号
plt.rcParams['axes.unicode_minus'] = False
# 设置子图间距
plt.subplots_adjust(hspace=0.5)
# wspace = None, 子图之间的宽度间距 ------设置为(0,1]小数 ---子图宽度占比
# hspace = None, 子图之间的高度间距 ------设置为(0,1]小数 ---子图高度占比

# 2、绘制图形和修饰

# 创建子图 1
fig.add_subplot(2, 1, 1)
# 横轴--时间--序号
x = np.arange(values.shape[0])  # TODO

# 纵轴--各个产业的增加总值 生成一个一维数组
# y1 = values[:, 3]
# y2 = values[:, 4]
# y3 = values[:, 5]
y = values[:, 3:6]
# 绘图
# 注意:此时使用一个横轴,对应队列数据,拿出每一类与横轴一一对应
# plt.plot(x, y1)
# plt.plot(x, y2)
# plt.plot(x, y3)
plt.plot(x, y)

# 增加标题
plt.title('2000-2017年各个产业、行业增加总值')

# 纵轴名称
plt.ylabel('生成总值(亿元)')

# 从colums中获取
legend = [tmp[:4] for tmp in columns[3:6]]  # TODO

# 创建图例
plt.legend(legend, loc=2, fontsize=5)  # fontsize=5 设置图例大小

# 修改横轴刻度
xticks = values[:, 1]  # 获取时间 如‘2000年第一季度’
plt.xticks(x[::4], xticks[::4], rotation=45)  # rotation 旋转角度 因为太密了设置步长来过度一些 x,轴必须对应

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

# 横坐标--时间年份
x = np.arange(values.shape[0])
# 纵坐标 y
y = values[:, 6:]
# 绘图
plt.plot(x, y)
# 创建图例
legend = [tmp[:2] for tmp in columns[6:]]
plt.legend(legend, fontsize=5)

# 修改x轴,将序号替换为中文
xticks = values[:, 1]
plt.xticks(x[::4], xticks[::4],rotation=45)

# 3、图形展示
# 保存图片
plt.savefig('./产业行业增加总值_折线图.png')
plt.show()

# 折线图的应用场景
# 用于查看一数据的发展规律、趋势---折线图


4、能熟练使用pandas进行csv等格式数据集的读写及导入数据库数据、识别及处理缺失值、去掉重复数据、使用分组聚合进行组内计算等;

4.1使用pandas进行csv等格式数据集的读写及导入数据库数据

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ee3VIQuP-1688019121055)(数据分析期末重点版.assets/image-20230628103340263.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hSqtWVy2-1688019121055)(数据分析期末重点版.assets/image-20230628103353203.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RFTEnxkX-1688019121055)(数据分析期末重点版.assets/image-20230628103400853.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vFxS47ae-1688019121056)(数据分析期末重点版.assets/image-20230628104657495.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6cWKzLDe-1688019121056)(数据分析期末重点版.assets/image-20230628104708637.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X0GhGhJ7-1688019121056)(数据分析期末重点版.assets/image-20230628104748882.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-26V0SXFQ-1688019121056)(数据分析期末重点版.assets/image-20230628104756724.png)]

4.2识别及处理缺失值

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dOsbZxy7-1688019121056)(数据分析期末重点版.assets/image-20230628112544711.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3Fx4BnEd-1688019121057)(数据分析期末重点版.assets/image-20230628112629077.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C6LAo8Cf-1688019121057)(数据分析期末重点版.assets/image-20230628112635797.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2XzsZhi8-1688019121057)(数据分析期末重点版.assets/image-20230628112648166.png)]

4.3去掉重复数据

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FQgE03IC-1688019121057)(数据分析期末重点版.assets/image-20230628112449050.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1RhZidDx-1688019121057)(数据分析期末重点版.assets/image-20230628112515699.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J5DBmnmu-1688019121057)(数据分析期末重点版.assets/image-20230628112532396.png)]

4.4使用分组聚合进行组内计算

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WuK3NAow-1688019121058)(数据分析期末重点版.assets/image-20230628112739147.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SUxffmtX-1688019121058)(数据分析期末重点版.assets/image-20230628114010145.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bzQauxQo-1688019121058)(数据分析期末重点版.assets/image-20230628114025023.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VCeAao6J-1688019121058)(数据分析期末重点版.assets/image-20230628114046928.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uqizwHS0-1688019121058)(数据分析期末重点版.assets/image-20230628114100316.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kpVmbztU-1688019121059)(数据分析期末重点版.assets/image-20230628114316354.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0PmhMlbe-1688019121059)(数据分析期末重点版.assets/image-20230628114343033.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EdnUEZoW-1688019121059)(数据分析期末重点版.assets/image-20230628114351946.png)]

5、能熟练使用scikit-learn进行训练集和测试集划分、数据标准化、SVM/LinearRegression/KMeans/等常见分类/回归/聚类模型的构建、预测及评价;

5.1使用scikit-learn进行训练集和测试集划分

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-69bwHYHc-1688019121059)(数据分析期末重点版.assets/image-20230628114544353.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XKebTQan-1688019121059)(数据分析期末重点版.assets/image-20230628114555592.png)]

5.2数据标准化

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KuAY3HYk-1688019121059)(数据分析期末重点版.assets/image-20230628115223836.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ty2Nf4xp-1688019121060)(数据分析期末重点版.assets/image-20230628115234275.png)]

ss = StandardScaler()
std_cps = ss.fit_transform(cps)

5.3SVM/LinearRegression/KMeans/等常见分类/回归/聚类模型的构建

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wIU1BkMq-1688019121060)(数据分析期末重点版.assets/image-20230628115340628.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PbbfqW9p-1688019121060)(数据分析期末重点版.assets/image-20230628115355407.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S95jIcE1-1688019121060)(数据分析期末重点版.assets/image-20230628115810490.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3AgVeJ72-1688019121060)(数据分析期末重点版.assets/image-20230628115823974.png)]

import numpy as np
import pandas as pd
data = pd.read_excel(r"data.xlsx")
data = np.array(data)
a=data[:,3:8]
b=data[:,2] 

2.开始试验各种不同的回归方法
2.1线性回归模型
#LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
x_train,x_test,y_train,y_test = train_test_split(a,b,test_size=0.2)
clf = LinearRegression()
rf = clf.fit (x_train, y_train.ravel())
y_pred = rf.predict(x_test)
print("LinearRegression结果如下:")
print("训练集分数:",rf.score(x_train,y_train))
print("验证集分数:",rf.score(x_test,y_test))

LinearRegression结果如下:
训练集分数: 0.591856113161297
验证集分数: 0.6214511243968527


2.2KNN回归模型
from sklearn.neighbors import KNeighborsRegressor
x_train,x_test,y_train,y_test = train_test_split(a,b,test_size=0.2)
clf = KNeighborsRegressor()
rf = clf.fit (x_train, y_train.ravel())
y_pred = rf.predict(x_test)
print("KNeighborsRegressor结果如下:")
print("训练集分数:",rf.score(x_train,y_train))
print("验证集分数:",rf.score(x_test,y_test))

KNeighborsRegressor结果如下:
训练集分数: 0.7216991832348424
验证集分数: 0.601773245289923


2.3SVM回归模型
from sklearn.svm import SVR
x_train,x_test,y_train,y_test = train_test_split(a,b,test_size=0.2)
clf = SVR()
rf = clf.fit (x_train, y_train.ravel())
y_pred = rf.predict(x_test)
print("SVR结果如下:")
print("训练集分数:",rf.score(x_train,y_train))
print("验证集分数:",rf.score(x_test,y_test))

SVR结果如下:
训练集分数: 0.37625861753449674
验证集分数: 0.4536826131027402
# 代码 6-10
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=12).fit(iris_dataScale) ##构建并训练模型
print('构建的K-Means模型为:\n',kmeans)

result = kmeans.predict([[1.5,1.5,1.5,1.5]])
print('花瓣花萼长度宽度全为1.5的鸢尾花预测类别为:', result[0])

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u2xBXvGw-1688019121061)(数据分析期末重点版.assets/20191203201833174.png)]

5.4预测及评价

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nlSUu4vw-1688019121061)(数据分析期末重点版.assets/image-20230628120333529.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VURcT3ta-1688019121061)(数据分析期末重点版.assets/image-20230628120409247.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GRuQefU9-1688019121061)(数据分析期末重点版.assets/image-20230628120422223.png)]

一个案例

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn import ensemble
from sklearn import  metrics

##############################################################################
# Load data
data = pd.read_csv('Data for train_0.003D.csv')
y = data.iloc[:,0]
X = data.iloc[:,1:]
offset = int(X.shape[0] * 0.9)
X_train, y_train = X[:offset], y[:offset]
X_test, y_test = X[offset:], y[offset:]

##############################################################################
# Fit regression model
params = {
    
    'n_estimators': 500, 'max_depth': 4, 'min_samples_split': 2,
          'learning_rate': 0.01, 'loss': 'ls'}
clf = ensemble.GradientBoostingRegressor(**params)

clf.fit(X_train, y_train)
y_pre = clf.predict(X_test)

# Calculate metrics
mse = metrics.mean_squared_error(y_test, y_pre)
print("MSE: %.4f" % mse)

mae = metrics.mean_absolute_error(y_test, y_pre)
print("MAE: %.4f" % mae)

R2 = metrics.r2_score(y_test,y_pre)
print("R2: %.4f" % R2)

##############################################################################
# Plot training deviance

# compute test set deviance
test_score = np.zeros((params['n_estimators'],), dtype=np.float64)

for i, y_pred in enumerate(clf.staged_predict(X_test)):
    test_score[i] = clf.loss_(y_test, y_pred)

plt.figure(figsize=(12, 6))
plt.subplot(1, 2, 1)
plt.title('Deviance')
plt.plot(np.arange(params['n_estimators']) + 1, clf.train_score_, 'b-',
         label='Training Set Deviance')
plt.plot(np.arange(params['n_estimators']) + 1, test_score, 'r-',
         label='Test Set Deviance')
plt.legend(loc='upper right')
plt.xlabel('Boosting Iterations')
plt.ylabel('Deviance')

##############################################################################
# Plot feature importance
feature_importance = clf.feature_importances_
# make importances relative to max importance
feature_importance = 100.0 * (feature_importance / feature_importance.max())
sorted_idx = np.argsort(feature_importance)
pos = np.arange(sorted_idx.shape[0]) + .5
plt.subplot(1, 2, 2)
plt.barh(pos, feature_importance[sorted_idx], align='center')
plt.yticks(pos, X.columns[sorted_idx])

plt.xlabel('Relative Importance')
plt.title('Variable Importance')
plt.show()


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PXrpeFHk-1688019121061)(数据分析期末重点版.assets/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1lxcTE5OTUwNzA3,size_16,color_FFFFFF,t_70.png)]

一个案例

"""
    使用 sklearn 线性模型 线性回归
"""
import numpy as np
import matplotlib.pyplot as mp
import sklearn.linear_model as lm
import sklearn.metrics as sm

# 读取文本
x, y = np.loadtxt("./single.txt", delimiter=",", unpack=True)

# 整理输入集
x = x.reshape(-1, 1)

# 绘制散点
mp.figure("Linear Regression", facecolor="lightgray")
mp.title("Linear Regression", fontsize=16)
mp.grid(linestyle=":")
mp.scatter(x, y, s=70, color="dodgerblue", label="samples")

# 构建线性回归模型
model = lm.LinearRegression()
model.fit(x, y)
# 针对训练数据 得到结果
prd_y = model.predict(x)
mp.plot(x, prd_y, color="orangered", label="Predict")

mp.legend()
mp.tight_layout()

# 评估当前模型
print("平均绝对值误差:", sm.mean_absolute_error(y, prd_y))
print("平均平方误差:", sm.mean_squared_error(y, prd_y))
print("中位绝对值误差:", sm.median_absolute_error(y, prd_y))
print("R2得分:", sm.r2_score(y, prd_y))

mp.show()



[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3a3BhFax-1688019121062)(数据分析期末重点版.assets/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTg3NTEwNQ==,size_16,color_FFFFFF,t_70.png)]

猜你喜欢

转载自blog.csdn.net/m0_57885354/article/details/131455371
今日推荐