蟒蛇大熊猫回归
问题描述:
标准化专栏中,我有以下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. ]]
答
缩放减去平均值和各功能(列)的标准差除以完成。所以,
scaled_event_counts = (Event_Counts - mean(Event_Counts))/std(Event_Counts)
到float64警告的Int64的来自其减去平均值,这将是一个浮点数,而不仅仅是一个整数。
由于平均值将标准化为零,因此您将在缩放列中得到负数。
有趣!我不知道存在,让我试试 – jeangelj
谢谢 - 这工作! – jeangelj
我收到了一个不同列的错误DeprecationWarning:传递1d数组作为数据在0.17中被弃用,并将0.19引发ValueError。如果数据具有单个特征,则使用X.reshape(-1,1)重新整形数据,如果数据包含单个特征,则使用X.reshape(1,-1)重整数据。 – jeangelj