数据挖掘作业(第二周)
# -*- coding: utf-8 -*-
"""
Created on Wed Mar 1 13:42:18 2023
@author: 86138
"""
# 代码6-1
import numpy as np
import pandas as pd
inputfile = r'C:\Users\86138\Downloads\data\数据挖掘与分析\data.csv' # 输入的数据文件
data = pd.read_csv(inputfile) # 读取数据
# 描述性统计分析
description = [data.min(), data.max(), data.mean(), data.std()] # 依次计算最小值、最大值、均值、标准差
description = pd.DataFrame(description, index = ['Min', 'Max', 'Mean', 'STD']).T # 将结果存入数据框
print('描述性统计结果:\n',np.round(description, 2)) # 保留两位小数
# 代码6-2
# 相关性分析
corr = data.corr(method = 'pearson') # 计算相关系数矩阵
print('相关系数矩阵为:\n',np.round(corr, 2)) # 保留两位小数
# 代码6-3
# 绘制热力图
import matplotlib.pyplot as plt
import seaborn as sns
plt.rcParams['font.sans-serif'] = ['SimHei'] #解决中文显示问题
plt.rcParams['axes.unicode_minus'] = False # 解决中文显示问题
plt.subplots(figsize=(10, 10)) # 设置画面大小
sns.heatmap(corr, annot=True, vmax=1, square=True, cmap="Blues")
plt.title('相关性热力图-3039')
plt.show()
plt.close
相关热力图如下:
半边相关性热力图:

# 代码6-4
import numpy as np
import pandas as pd
from sklearn.linear_model import Lasso
inputfile = r'C:\Users\86138\Downloads\data\数据挖掘与分析\data.csv' # 输入的数据文件
data = pd.read_csv(inputfile) # 读取数据
lasso = Lasso(1000) # 调用Lasso()函数,设置λ的值为1000
lasso.fit(data.iloc[:,0:13],data['y'])
print('相关系数为:',np.round(lasso.coef_,5)) # 输出结果,保留五位小数
print('相关系数非零个数为:',np.sum(lasso.coef_ != 0)) # 计算相关系数非零的个数
mask = lasso.coef_ != 0 # 返回一个相关系数是否为零的布尔数组
print('相关系数是否为零:',mask)
outputfile =r'C:\Users\86138\Downloads\data\数据挖掘与分析\new_reg_data.csv' # 输出的数据文件
mask=np.append(mask,True)
new_reg_data = data.iloc[:, mask] # 返回相关系数非零的数据
new_reg_data.to_csv(outputfile) # 存储数据
print('输出数据的维度为:',new_reg_data.shape) # 查看输出数据的维度

posted on 2023-03-05 19:47 蓝螃蟹Karry0921 阅读(29) 评论(0) 收藏 举报
浙公网安备 33010602011771号