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

首先确定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进行数据预处理 —— 归一化/标准化/正则化

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

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
决策树算法可以使用Python中的scikit-learn库来实现,同时也可以直接对DataFrame进行处理。 以下是一个例子: 假设我们有一个名为df的DataFrame,包含如下列: - age:表示一个人的年龄 - sex:表示一个人的性别 - income:表示一个人的收入水平 - education:表示一个人的教育水平 - target:表示这个人是否会购买一辆新车 现在我们想要使用决策树算法来预测一个人是否会购买一辆新车。那么,我们可以按照以下步骤进行: 1. 首先,将我们的数据集分为特征(features)和目标(target)两部分。在这个例子中,特征是age、sex、income和education,目标是target。 ``` X = df[['age', 'sex', 'income', 'education']] y = df['target'] ``` 2. 接下来,将我们的数据集分为训练集(training set)和测试集(test set)两部分。我们将使用训练集来训练我们的决策树模型,并使用测试集来测试模型的准确性。 ``` from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) ``` 3. 现在我们可以使用scikit-learn库中的DecisionTreeClassifier类来创建一个决策树模型,并将其拟合到我们的训练集数据中。 ``` from sklearn.tree import DecisionTreeClassifier dt = DecisionTreeClassifier() dt.fit(X_train, y_train) ``` 4. 最后,我们可以使用测试集数据来评估我们的决策树模型的准确性。 ``` from sklearn.metrics import accuracy_score y_pred = dt.predict(X_test) accuracy_score(y_test, y_pred) ``` 完整代码如下: ``` from sklearn.model_selection import train_test_split from sklearn.tree import DecisionTreeClassifier from sklearn.metrics import accuracy_score X = df[['age', 'sex', 'income', 'education']] y = df['target'] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) dt = DecisionTreeClassifier() dt.fit(X_train, y_train) y_pred = dt.predict(X_test) accuracy_score(y_test, y_pred) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

量化橙同学

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

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

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

打赏作者

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

抵扣说明:

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

余额充值