python – 熊猫分类变量转换
发布时间:2020-12-20 13:11:26 所属栏目:Python 来源:网络整理
导读:Data.csv:param1,param2,param3,result ???????????1,2,cat1,12 ???????????2,3,cat2,13 ???????????1,6,6 ???????????1,1,12 假设我从文件中读取数据并将分类变量转换为虚拟变量,如下所示: import pandas as pdfrom sklearn.cross_validation import trai
Data.csv:param1,param2,param3,result
???????????1,2,cat1,12 ???????????2,3,cat2,13 ???????????1,6,6 ???????????1,1,12 假设我从文件中读取数据并将分类变量转换为虚拟变量,如下所示: import pandas as pd from sklearn.cross_validation import train_test_split from sklearn.linear_model import LinearRegression data = pd.read_csv('data.csv') type_dummies = pd.get_dummies(data.house_type) data = pd.concat([data,type_dummies],axis=1) 我收到了数据帧: 1,.. 1,.. 我对该数据集进行了简单的线性回归并接收了系数.如何使用pandas在我的线性模型中使用它来为new_data = np.array([12,19,0)转换新记录(new_data = np.array([12,cat1]))? (这样新数据分类变量将转换为虚拟变量) 解决方法
通常,您需要设置管道以记录正确的类别:代码映射.
class CategoricalTransformer(TransformerMixin): def fit(self,X,y=None,*args,**kwargs): self.columns_ = X.columns self.cat_columns_ = X.select_dtypes(include=['category']).columns self.non_cat_columns_ = X.columns.drop(self.cat_columns_) self.cat_map_ = {col: X[col].cat.categories for col in self.cat_columns_} self.ordered_ = {col: X[col].cat.ordered for col in self.cat_columns_} self.dummy_columns_ = {col: ["_".join([col,v]) for v in self.cat_map_[col]] for col in self.cat_columns_} self.transformed_columns_ = pd.Index( self.non_cat_columns_.tolist() + list(chain.from_iterable(self.dummy_columns_[k] for k in self.cat_columns_)) ) def transform(self,**kwargs): return (pd.get_dummies(X) .reindex(columns=self.transformed_columns_) .fillna(0)) 更多here. 使用管道sklearn.pipeline.make_pipeline(CategoricalTransformer(),LinearRegression()),您的预测方法应该正确地从分类house_type转换为变量. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |