将Pandas Dataframe转换为numpy for sklearn

时间:2015-04-08 10:28:16

标签: python numpy pandas scikit-learn

我是python和sklearn的新手。我有一个庞大数据集的熊猫数据框。我希望它用于sklearn后勤预测。

我尝试了以下

data_np = data.astype(np.int32).values

但不行。我想利用数据集中的不同功能,例如' Pclass'," Age",' Sex'等...

我想要转换整个数据,以及单列说数据[" Age"]以获取numpy格式。任何帮助。

3 个答案:

答案 0 :(得分:4)

像'Sex'和'Embarked'这样的分类变量需要进行一次热编码才能在LogisticRegression模型中使用它们。使用pandas,您可以使用get_dummies(data['Sex'])

这里有一个完整的教程,专门针对同一数据集讨论了这个问题:

http://nbviewer.ipython.org/github/ogrisel/parallel_ml_tutorial/blob/master/rendered_notebooks/04%20-%20Pandas%20and%20Heterogeneous%20Data%20Modeling.ipynb

答案 1 :(得分:3)

这是一个常见问题。主要原因是缺乏对numpy的熟悉。

要将数据['Sex']的功能转换为颠簸阵列,请使用以下代码。

from sklearn.preprocessing import LabelEncoder

enc = LabelEncoder()
label_encoder = enc.fit(p_train['Sex'])
print "Categorical classes:", label_encoder.classes_
integer_classes = label_encoder.transform(label_encoder.classes_)
print "Integer classes:", integer_classes
x_train = label_encoder.transform(p_train['Sex'])
x_test = label_encoder.transform(p_test['Sex'])

x_train = x_train[:,np.newaxis]
x_test = x_test[:,np.newaxis]

在这里,我们基本上将“男性”和“女性”分类数据转换为0和1的整数类。这是必需品sclera期望一切都是浮动的。 np.newaxis用于将x_train的形状从(n_features,)转换为(n_features,1)。否则,在拟合模型时,您将遇到另一个不兼容形状的错误。

答案 2 :(得分:2)

要处理您的数字非数字数据,请考虑使用scikit-learn LabelEncoder,这样就可以

  

对值介于0和n_classes-1之间的标签进行编码。

另见:

https://stackoverflow.com/a/29187634/1569064