机器学习:线性模型学习总结(1):线性回归

基于周志华老师的《机器学习》、上一篇学习笔记以及网络的其他资料,对线性模型的这一部分内容进行一个总结。

学习时间:2022.04.17~2022.04.18

0. 数据预处理

尝试构建了一个可以通用处理的数据预处理函数(不能处理文本和时间数据,因为要具体情况具体分析)。

    column_lists = list(df)  # 获取所有的列名
    bool_cos = []  # 获取所有的布尔类型列
    classify_cos = []  # 获取所有的分类数据列
    number_cos = []  # 获取所有的数据类型列
    date_cos = []  # 获取所有的时间类型列

    for i in column_lists:
        if df[i].dtypes == 'bool':
            bool_cos.append(i)
        elif df[i].dtypes == 'object':
            classify_cos.append(i)
        elif str(df[i].dtypes) == 'datetime':
            date_cos.append(i)
        else:
            number_cos.append(i)

    # 缺失值添加是否缺失的特征列
    for i in column_lists:
        if df[i].isnull().any():  # 判断是否有缺失值
            # 或者用if np.any(df[i].isnull()):
            new_column = str(i + '_ifNaN')  # 设置新列名
            df[new_column] = df.apply(lambda df: 1 if df[i] == np.NaN else 0, axis=1) 

    # 对于分类型数据,使用众数填充
    for i in classify_cos:
        df[i] = df[i].fillna(df[i].mode()[0])

    # 对于数值型数据,使用均值填充,并进行标准化(归一化的应用场景有限,可能会将数据的间距缩小)
    for i in number_cos:
        df[i].fillna(df[i].mean(), inplace=True)

        def stand_sca(data):
            data_standard = (data-data.mean())/data.std()
            return data_standard

        df[i] = stand_sca(df[i])

    # 对于bool类型数据,使用众数填充,并转换成0和1
    for i in bool_cos:
        df[i].fillna(df[i].mode(), inplace=True)
        df[i] = df[i].astype('int')

    df = pd.get_dummies(df)

1. 用SK-Learn做线性回归模型

1.1 线性回归

sklearn.linear_model.LinearRegression

1.2 随机梯度下降执行线性回归

sklearn.linear_model.SGDRegressor

可能需要调整的参数:

  • loss损失函数:要使用的损失函数。

    • loss=“squared_error”:平方误差损失函数,普通最小二乘;
    • “loss=huber”:增强平方误差损失函数对离群点的鲁棒性;
    • “loss=epsilon_insensitive”:标准SVR的损失函数,是L1损耗;
    • “loss=squared_epsilon_insensit
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

新四石路打卤面

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值