有沒有辦法使用sklearn.preprocessing對象來分類分類值?我想最終創建一個預處理對象,我可以將其應用於新數據,並將其轉換爲與舊數據相同的方式。Sklearn:分類的印象?
我正在尋找一種方法來做到這一點,以便我可以使用它this的方式。
有沒有辦法使用sklearn.preprocessing對象來分類分類值?我想最終創建一個預處理對象,我可以將其應用於新數據,並將其轉換爲與舊數據相同的方式。Sklearn:分類的印象?
我正在尋找一種方法來做到這一點,以便我可以使用它this的方式。
複製和修改this答案,我做了一個imputer的pandas.Series對象
import numpy
import pandas
from sklearn.base import TransformerMixin
class SeriesImputer(TransformerMixin):
def __init__(self):
"""Impute missing values.
If the Series is of dtype Object, then impute with the most frequent object.
If the Series is not of dtype Object, then impute with the mean.
"""
def fit(self, X, y=None):
if X.dtype == numpy.dtype('O'): self.fill = X.value_counts().index[0]
else : self.fill = X.mean()
return self
def transform(self, X, y=None):
return X.fillna(self.fill)
要使用它,你會怎麼做:
# Make a series
s1 = pandas.Series(['k', 'i', 't', 't', 'e', numpy.NaN])
a = SeriesImputer() # Initialize the imputer
a.fit(s1) # Fit the imputer
s2 = a.transform(s1) # Get a new series
是的,這是可能的。例如,您可以使用參數strategy = 'most_frequent'
的sklearn.preprocessing.Imputer
。
使用fit_transform
方法將其應用於舊數據(訓練集),然後在新數據(測試集)上應用transform
。
我不認爲Imputer使用字符串。 – user1367204
嗯,我認爲它已經是數字(整數)分類。如果分類數據是字符串格式,首先需要將其轉換爲數字,例如,sklearn.LabelEncoder – slonopotam
當我使用LabelEncoder時,我失去了numpy.NaN字段,它們變成了一個數字,然後我無法在下一步中使用Imputer。 – user1367204
您應該添加更多的解釋,連同數據一起你想用它做什麼? –