机器学习基于线性回归

#数据处理,数据读取的工具包
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']
#读取数据
dpath = "./data/"
df = pd.read_csv(dpath + "Advertising.csv")
#df.columns = ['记录号','电视广告费用', '广播广告费用', '报纸广告费用', '产品销量']
df.columns = ['ID','TV', 'radio', 'newspaper', 'sales']
#通过观察前5行,了解数据每列(特征)的概况
df.head()
df.info()
# 对数值型特征,得到每个特征的描述统计量,查看特征的大致分布
df.describe()
#散点图查看单个特征与目标之间的关系
plt.scatter(df['TV'], df['sales'])
plt.xlabel(u'电视广告费用')
plt.ylabel(u'销量')
plt.show()
plt.scatter(df['radio'], df['sales'])
plt.xlabel(u'广播广告费用')
plt.ylabel(u'销量')
plt.show()
plt.scatter(df['newspaper'], df['sales'])
plt.xlabel(u'报纸广告费用')
plt.ylabel(u'销量')
plt.show()
#%%
# 数据总体信息
df.info()
## 3. 数据标准化
# 从原始数据中分离输入特征x和输出y
y = df['sales']
X = df.drop('sales', axis = 1)
#特征名称,用于后续显示权重系数对应的特征
feat_names = X.columns
#%%
# 数据标准化
# 本数据集中3个特征的单位相同,可以不做特征缩放,不影响正则
# 但3个特征的取值范围不同,如果采用梯度下降/随机梯度下降法求解,
# 还是将所有特征的取值范围缩放到相同区间

# 分别初始化对特征和目标值的标准化器
ss_X = StandardScaler()

# 对训练数据,先调用fit方法训练模型,得到模型参数;然后对训练数据和测试数据进行transform
X = ss_X.fit_transform(X)
#%% md

## 4. 保存特征工程的结果到文件,供机器学习模型使用

#%%
fe_df = pd.DataFrame(data = X, columns = feat_names, index = df.index)
#加上标签y
fe_df["sales"] = y
#保存结果到文件
fe_df.to_csv(dpath + 'processed.csv', index=False)
#%%
fe_df.head()
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值