加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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转换为变量.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读