#数据处理,数据读取的工具包 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()
机器学习基于线性回归
于 2022-06-09 16:15:52 首次发布