You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.
# -*- coding: utf-8 -*-
###############################################################################
####################### 任务实现 #######################
###############################################################################
# 代码 8-2
# 使用了 Lasso 回归模型来分析数据集的特征,
# 从中筛选出与目标变量 y 相关的重要特征,并将结果保存到一个新的 CSV 文件中。以下是对代码的逐步分析:
import numpy as np
import pandas as pd
from sklearn . linear_model import Lasso
# inputfile = '../data/data.csv' #输入的数据文件
inputfile = ' ./data.csv ' #输入的数据文件
data = pd . read_csv ( inputfile ) #读取数据
# lasso = Lasso(1000) #调用Lasso()函数, 设置λ的值为1000
lasso = Lasso ( alpha = 1000 , max_iter = 5000 ) # 增加迭代次数
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 = '../tmp/new_reg_data.csv' #输出的数据文件
outputfile = ' ./new_reg_data.csv ' #输出的数据文件
# new_reg_data = data.iloc[:, mask] #返回相关系数非零的数据
# 返回相关系数非零的数据
new_reg_data = data . iloc [ : , : 13 ] . loc [ : , mask ] # 只选择0到12列中非零的列
new_reg_data . to_csv ( outputfile ) #存储数据
print ( ' 输出数据的维度为: ' , new_reg_data . shape ) #查看输出数据的维度