sklearn分类器管道所需的“列的有效规范”是什么?

韦伯

目标:使用sklearn基于int和基于对象的功能预测结果。

我正在使用Kaggle中的以下数据集:Soccer Dataset

这是我的笔记本:Kaggle笔记本

图书馆

  • scikit学习== 0.22.1

我创建了一个几乎可以运行的管道:

import pandas as pd
import numpy as np

from sklearn.model_selection import train_test_split
from sklearn.compose import ColumnTransformer
from sklearn.pipeline import Pipeline
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import OneHotEncoder, StandardScaler
from sklearn.ensemble import RandomForestClassifier

# Read the data
df = total_df.copy()

# Remove rows with missing target
df.dropna(axis=0, subset=['result'], inplace=True)

# Separate target from predictors
y = df.result         
X = df.drop(['result'], axis=1)

# Break off validation set from training data
X_train_full, X_test_full, y_train, y_test = train_test_split(X, y,
                                                                train_size=0.8,
                                                                test_size=0.2,
                                                                random_state=0)

integer_features = list(X.columns[X.dtypes == 'int64'])
#continuous_features = list(X.columns[X.dtypes == 'float64'])
categorical_features = list(X.columns[X.dtypes == 'object'])

# Keep selected columns only
my_cols = categorical_features + integer_features
X_train = X_train_full[my_cols].copy()
X_test = X_test_full[my_cols].copy()

integer_transformer = Pipeline(steps = [
   ('imputer', SimpleImputer(strategy = 'most_frequent')),
   ('scaler', StandardScaler())])

categorical_transformer = Pipeline(steps=[
    ('imputer', SimpleImputer(strategy='most_frequent')),
    ('onehot', OneHotEncoder(handle_unknown='ignore'))
])

preprocessor = ColumnTransformer(
   transformers=[
       ('ints', integer_transformer, integer_features),
       ('cat', categorical_transformer, categorical_features)])

base = Pipeline(steps=[('preprocessor', preprocessor),
                     ('classifier', RandomForestClassifier())])

# Preprocessing of training data, fit model 
base.fit(X_train, y_train)

我收到一个错误:

ValueError: No valid specification of the columns. Only a scalar, list or slice of all integers or all strings, or boolean mask is allowed

这是完整的回溯:

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
/opt/conda/lib/python3.7/site-packages/sklearn/utils/__init__.py in _determine_key_type(key, accept_slice)
    255         try:
--> 256             return dtype_to_str[type(key)]
    257         except KeyError:

KeyError: <class 'sqlalchemy.sql.elements.quoted_name'>

During handling of the above exception, another exception occurred:

ValueError                                Traceback (most recent call last)
<ipython-input-13-702987dff390> in <module>
     47 
     48 # Preprocessing of training data, fit model
---> 49 base.fit(X_train, y_train)
     50 
     51 base.predict(X_test)

/opt/conda/lib/python3.7/site-packages/sklearn/pipeline.py in fit(self, X, y, **fit_params)
    348             This estimator
    349         """
--> 350         Xt, fit_params = self._fit(X, y, **fit_params)
    351         with _print_elapsed_time('Pipeline',
    352                                  self._log_message(len(self.steps) - 1)):

/opt/conda/lib/python3.7/site-packages/sklearn/pipeline.py in _fit(self, X, y, **fit_params)
    313                 message_clsname='Pipeline',
    314                 message=self._log_message(step_idx),
--> 315                 **fit_params_steps[name])
    316             # Replace the transformer of the step with the fitted
    317             # transformer. This is necessary when loading the transformer

/opt/conda/lib/python3.7/site-packages/joblib/memory.py in __call__(self, *args, **kwargs)
    353 
    354     def __call__(self, *args, **kwargs):
--> 355         return self.func(*args, **kwargs)
    356 
    357     def call_and_shelve(self, *args, **kwargs):

/opt/conda/lib/python3.7/site-packages/sklearn/pipeline.py in _fit_transform_one(transformer, X, y, weight, message_clsname, message, **fit_params)
    726     with _print_elapsed_time(message_clsname, message):
    727         if hasattr(transformer, 'fit_transform'):
--> 728             res = transformer.fit_transform(X, y, **fit_params)
    729         else:
    730             res = transformer.fit(X, y, **fit_params).transform(X)

/opt/conda/lib/python3.7/site-packages/sklearn/compose/_column_transformer.py in fit_transform(self, X, y)
    514         self._validate_transformers()
    515         self._validate_column_callables(X)
--> 516         self._validate_remainder(X)
    517 
    518         result = self._fit_transform(X, y, _fit_transform_one)

/opt/conda/lib/python3.7/site-packages/sklearn/compose/_column_transformer.py in _validate_remainder(self, X)
    316         if (hasattr(X, 'columns') and
    317                 any(_determine_key_type(cols) == 'str'
--> 318                     for cols in self._columns)):
    319             self._df_columns = X.columns
    320 

/opt/conda/lib/python3.7/site-packages/sklearn/compose/_column_transformer.py in <genexpr>(.0)
    316         if (hasattr(X, 'columns') and
    317                 any(_determine_key_type(cols) == 'str'
--> 318                     for cols in self._columns)):
    319             self._df_columns = X.columns
    320 

/opt/conda/lib/python3.7/site-packages/sklearn/utils/__init__.py in _determine_key_type(key, accept_slice)
    275     if isinstance(key, (list, tuple)):
    276         unique_key = set(key)
--> 277         key_type = {_determine_key_type(elt) for elt in unique_key}
    278         if not key_type:
    279             return None

/opt/conda/lib/python3.7/site-packages/sklearn/utils/__init__.py in <setcomp>(.0)
    275     if isinstance(key, (list, tuple)):
    276         unique_key = set(key)
--> 277         key_type = {_determine_key_type(elt) for elt in unique_key}
    278         if not key_type:
    279             return None

/opt/conda/lib/python3.7/site-packages/sklearn/utils/__init__.py in _determine_key_type(key, accept_slice)
    256             return dtype_to_str[type(key)]
    257         except KeyError:
--> 258             raise ValueError(err_msg)
    259     if isinstance(key, slice):
    260         if not accept_slice:

ValueError: No valid specification of the columns. Only a scalar, list or slice of all integers or all strings, or boolean mask is allowed

任何帮助将不胜感激!

编辑:错误指出“仅允许所有整数或所有字符串的标量,列表或切片,或者允许使用布尔掩码”。integer_features并且categorical_features是包含列的唯一字符串名称列表。

Vishal Mathimaran

您已将list用于integer_features和分类特征,而Transformer需要使用Index类型。

categorical_features = X.select_dtypes(include="object").columns
integer_features = X.select_dtypes(exclude="object").columns

更改此设置将解决您的错误。:)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

有效的mac地址的规范到底是什么?

来自分类Dev

在PySpark中进行分类还原的最有效方法是什么?

来自分类Dev

匹配所有有效的RTSP URL,带有身份验证的URL规范是什么?

来自分类Dev

有效的语法查询是什么?

来自分类Dev

在iOS中显示具有多列的表的最有效方法是什么?

来自分类Dev

汇总名称以模式开头的所有列的最有效方法是什么?

来自分类Dev

基于两列的所有组合检索数据的有效方法是什么?

来自分类Dev

在NodeJS服务器之间发送文件的最有效方法是什么?

来自分类Dev

在CUDA中交换两个寄存器变量的有效方法是什么?

来自分类Dev

检测和重定向支持SNI的浏览器最有效的代码是什么?

来自分类Dev

在Rust中重用迭代器的最有效方法是什么?

来自分类Dev

Spring MVC控制器方法的有效返回类型是什么?

来自分类Dev

多次使用jQuery选择器的最有效/最快方法是什么?

来自分类Dev

begin()是有效的迭代器操作吗?如果是,它指的是什么?

来自分类Dev

Redis过期有效的机制是什么?使用回调或服务器保持ping

来自分类Dev

从服务器加载Google Maps标记的最有效方法是什么

来自分类Dev

使用 JavaScript 的事件委托设置删除事件侦听器的有效方法是什么

来自分类常见问题

创建两个熊猫数据框列的字典的最有效方法是什么?

来自分类Dev

在R中删除数据表中空列的最有效方法是什么

来自分类Dev

更正列中文本类型数据的最有效方法是什么?

来自分类Dev

在 DataTable 列中计算总数的最有效方法是什么

来自分类Dev

将列的值按特定顺序排序的最有效方法是什么?

来自分类Dev

查找值 X 不在 Y 列中的记录的最有效方法是什么?

来自分类Dev

什么 SKLearn 分类器带有 class_weight 参数

来自分类Dev

阅读有效,更有效和有效的现代C ++(和STL)的首选顺序是什么?

来自分类Dev

“证书对10.96.0.1、10.198.74.71有效,而不对127.0.0.1有效”是什么意思?

来自分类Dev

在javascript中获取数字的最低有效位的最有效方法是什么?

来自分类Dev

过滤单个资源最有效的方法是什么?

来自分类Dev

使wifi工作最有效的方法是什么?

Related 相关文章

  1. 1

    有效的mac地址的规范到底是什么?

  2. 2

    在PySpark中进行分类还原的最有效方法是什么?

  3. 3

    匹配所有有效的RTSP URL,带有身份验证的URL规范是什么?

  4. 4

    有效的语法查询是什么?

  5. 5

    在iOS中显示具有多列的表的最有效方法是什么?

  6. 6

    汇总名称以模式开头的所有列的最有效方法是什么?

  7. 7

    基于两列的所有组合检索数据的有效方法是什么?

  8. 8

    在NodeJS服务器之间发送文件的最有效方法是什么?

  9. 9

    在CUDA中交换两个寄存器变量的有效方法是什么?

  10. 10

    检测和重定向支持SNI的浏览器最有效的代码是什么?

  11. 11

    在Rust中重用迭代器的最有效方法是什么?

  12. 12

    Spring MVC控制器方法的有效返回类型是什么?

  13. 13

    多次使用jQuery选择器的最有效/最快方法是什么?

  14. 14

    begin()是有效的迭代器操作吗?如果是,它指的是什么?

  15. 15

    Redis过期有效的机制是什么?使用回调或服务器保持ping

  16. 16

    从服务器加载Google Maps标记的最有效方法是什么

  17. 17

    使用 JavaScript 的事件委托设置删除事件侦听器的有效方法是什么

  18. 18

    创建两个熊猫数据框列的字典的最有效方法是什么?

  19. 19

    在R中删除数据表中空列的最有效方法是什么

  20. 20

    更正列中文本类型数据的最有效方法是什么?

  21. 21

    在 DataTable 列中计算总数的最有效方法是什么

  22. 22

    将列的值按特定顺序排序的最有效方法是什么?

  23. 23

    查找值 X 不在 Y 列中的记录的最有效方法是什么?

  24. 24

    什么 SKLearn 分类器带有 class_weight 参数

  25. 25

    阅读有效,更有效和有效的现代C ++(和STL)的首选顺序是什么?

  26. 26

    “证书对10.96.0.1、10.198.74.71有效,而不对127.0.0.1有效”是什么意思?

  27. 27

    在javascript中获取数字的最低有效位的最有效方法是什么?

  28. 28

    过滤单个资源最有效的方法是什么?

  29. 29

    使wifi工作最有效的方法是什么?

热门标签

归档