蟒蛇大熊猫回归

问题描述:

标准化专栏中,我有以下DF:蟒蛇大熊猫回归

Date  Event_Counts Category_A Category_B 
20170401  982457   0   1 
20170402  982754   1   0 
20170402  875786   0   1 

我正在准备中的数据进行回归分析,并要规范列Event_Counts,因此,它是一个类似鳞片状的类别。

我使用下面的代码:

from sklearn import preprocessing 
df['scaled_event_counts'] = preprocessing.scale(df['Event_Counts']) 

虽然我得到这样的警告:

DataConversionWarning: Data with input dtype int64 was converted to float64 by the scale function. 
    warnings.warn(msg, _DataConversionWarning) 

似乎已经奏效;有一个新的专栏。然而,它有-1.3的负数

我认为尺度函数的作用是从数字中减去平均值,并将其除以每一行的标准偏差;然后将结果的最小值添加到每一行。

这对熊猫来说不适用吗?或者我应该使用normalize()函数还是StandardScaler()函数?我想有0分的标准化列1

谢谢

我认为您在寻找sklearn.preprocessing.MinMaxScaler。这将允许您缩放到一个给定的范围。

所以你的情况这将是:

scaler = preprocessing.MinMaxScaler(feature_range=(0,1)) 
df['scaled_event_counts'] = scaler.fit_transform(df['Event_Counts']) 

要缩放整个DF:

scaled_df = scaler.fit_transform(df) 
print(scaled_df) 
[[ 0.   0.99722347 0.   1.  ] 
[ 1.   1.   1.   0.  ] 
[ 1.   0.   0.   1.  ]] 
+0

有趣!我不知道存在,让我试试 – jeangelj

+0

谢谢 - 这工作! – jeangelj

+0

我收到了一个不同列的错误DeprecationWarning:传递1d数组作为数据在0.17中被弃用,并将0.19引发ValueError。如果数据具有单个特征,则使用X.reshape(-1,1)重新整形数据,如果数据包含单个特征,则使用X.reshape(1,-1)重整数据。 – jeangelj

缩放减去平均值和各功能(列)的标准差除以完成。所以,

scaled_event_counts = (Event_Counts - mean(Event_Counts))/std(Event_Counts) 

到float64警告的Int64的来自其减去平均值,这将是一个浮点数,而不仅仅是一个整数。

由于平均值将标准化为零,因此您将在缩放列中得到负数。

+0

谢谢;和预处理的scale()完全一样吗? – jeangelj

+0

是的。如果你愿意,可以在这里找到源代码(https://github.com/scikit-learn/scikit-learn/blob/0.18.1/sklearn/preprocessing/data.py#L80)。 – msitt

+0

谢谢 - 现在就读它 – jeangelj