
1,2,cat1,12
2,3,cat2,13
1,6,6
1,1,12
假设我从文件中读取数据并将分类变量转换为虚拟变量,如下所示:
import pandas as pdfrom sklearn.cross_valIDation import train_test_splitfrom sklearn.linear_model import linearRegressiondata = 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转换为变量.
总结以上是内存溢出为你收集整理的python – 熊猫分类变量转换全部内容,希望文章能够帮你解决python – 熊猫分类变量转换所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)