python数据处理——使用dataframe传入sklearn模型的常用操作

本文探讨了数据预处理中归一化的重要性和具体操作,包括使用MinMaxScaler和Binarizer对数据进行归一化,以及如何在金融数据集中生成标签。通过实例展示了归一化对不同模型性能的影响,并提供了多个数据预处理教程的链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先确定x_all和y_all,x_all经常涉及的问题就是归一化的问题,统一各个features的量纲,这是非常有必要的,

对于数据x_all进行归一化有几种常见的操作,比如我要对某一列进行归一化,就可以这样:


t = pd.DataFrame({
    'A': [1, 1, 2, 2, 3],
    'B': [4, 5, 5, 6, 6]
})
t.A =  MinMaxScaler().fit_transform(t.A.astype('float').values.reshape((-1, 1)))
print t.A
t.A = Binarizer(2).fit_transform(t.A.astype('float').values.reshape((-1, 1)))
print t.A

另外有一个操作就是对X整体进行一个归一化,如这样

import numpy as np
from sklearn import preprocessing


# 定义array
a = np.array([-10, 2.3, 13.7, 56, 108])
print a

# 对array进行归一化(normalization)
# scale进行的操作是按列减去均值, 除以方差, 因此数据的均值为0, 方差为1
print preprocessing.scale(a)

结果是这样的:

[ -10.     2.3   13.7   56.   108. ]
[-1.01951435 -0.73451375 -0.47036685  0.50975718  1.71463777]

上面的两段代码来自这里,博主还给了在svm模型下效果的测试,不得不说对于一些模型而言,进行归一化对模型的提升很有帮助,而在这篇在金融数据集给出的测试则表明,归一化对模型的提升并不是一颗银弹,如在树模型下,归一化的效果就很一般般

而y_all就是打标签,一般是要自己来处理的,对于金融数据的话,最常见的标签就是涨跌,一般是利用这一时刻的收益率来判断的,涉及到的操作就是对dataframe进行列的生成像是这样,对Data中‘ret’这列进行处理,这列代表的含义就是收益率,如果收益率大于0.01就是代表行情利多,否则就是利空,这样就可以了

import numpy as np 
import pandas as pd 
  

def function(a):
    if a>0.01:
        return 1
    elif a<0.01:
        return -1
    else:
        return 0


def deal_data(Data):
    Data['label'] =Data.apply(lambda x: function(x.ret), axis=1)

此外对于模型数据的预处理是一门很重要的学问,这里还给出了博主找到的几个还不错的csdn博主的教程,希望可以帮到大家:

数据归一化和其在sklearn中的处理

关于使用sklearn进行数据预处理 —— 归一化/标准化/正则化

待续,有对这方面感兴趣的老铁,可以私信聊一下,或者评论区讨论分享

### 使用 sklearn 的 Boston 房价数据集进行样本数据分析 以下是关于如何利用 `sklearn` 中的 Boston 房价数据集进行分析的具体方法: #### 数据加载与初步了解 通过 `load_boston()` 函数可以获取到 Boston 房价数据集。该数据集中包含了 506 条记录以及 13 个特征变量[^1]。 ```python from sklearn.datasets import load_boston import pandas as pd boston = load_boston() data = pd.DataFrame(boston.data, columns=boston.feature_names) data['PRICE'] = boston.target print(data.head()) ``` 上述代码展示了如何将原始数据转换成 Pandas DataFrame 格式以便于后续操作,其中包括了目标变量 PRICE 和其他 13 个特征列[^3]。 #### 划分训练集和测试集 为了验证模型性能,在构建模型之前通常会把整个数据集划分为训练集和测试集两部分。这里采用的是按照一定比例随机划分的方式完成这一过程。例如下面的例子中设置了 80% 的数据用于训练而剩下的 20% 用来评估模型表现。 ```python from sklearn.model_selection import train_test_split X = data.drop('PRICE', axis=1) y = data['PRICE'] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) print(f"Training set size: {len(y_train)}") print(f"Testing set size: {len(y_test)}") ``` 此段脚本实现了按指定的比例拆分输入矩阵 X 及相应标签向量 Y 成两个独立子集合——即训练组与检验组,并打印各自大小信息确认分割成功与否[^2]。 #### 特征缩放处理 由于不同属性可能具有不同的尺度范围,因此有必要执行标准化或者规范化预处理步骤来消除这种差异带来的影响。这一步骤有助于提高某些机器学习算法收敛速度并改善最终预测效果。 ```python from sklearn.preprocessing import StandardScaler scaler = StandardScaler() X_train_scaled = scaler.fit_transform(X_train) X_test_scaled = scaler.transform(X_test) ``` 在这里我们创建了一个标准差变换器实例对象 `StandardScaler`, 并分别对其应用到了我们的训练数据上进行了拟合计算均值方差参数后再做相应的调整;而对于测试数据则仅需依据已知统计特性来进行同样的映射即可。 #### 构建线性回归模型 接着我们可以建立简单的线性回归模型并对它加以训练: ```python from sklearn.linear_model import LinearRegression model = LinearRegression() model.fit(X_train_scaled, y_train) ``` 这段程序定义了一款基础版直线型关系推测工具类别的实体成员 variable 'model' ,随后调用了它的 fit 方法传入经过前序准备阶段得到的标准形式化后的自变数数组连同对应的因变数值列表共同作为参量启动内部机制完成一次完整的估计流程. #### 性能评价指标展示 最后还需要考量所生成出来的成果质量好坏程度怎样?一般常用 R² 值、平均绝对误差(MAE) 或者根均方误(RMSE) 等度量手段予以衡量比较合适些. ```python from sklearn.metrics import mean_squared_error, r2_score predictions = model.predict(X_test_scaled) mse = mean_squared_error(y_test, predictions) r2 = r2_score(y_test, predictions) print(f"MSE: {mse}") print(f"R2 Score: {r2}") ``` 以上命令行语句先是对未知样例做出预期估值动作之后再借助专门函数库里的特定功能模块测算得出具体量化描述结果呈现给使用者查看参考之用。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

量化橙同学

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

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

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

打赏作者

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

抵扣说明:

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

余额充值