【发布时间】:2020-11-13 14:29:47
【问题描述】:
我正在尝试根据下面的 python 代码基于特定的分类字段(性别和最高证书、倾角、度)来预测收入(70000+)。
我为平均收入创建了一个范围,然后指定了我想预测的具体收入范围(70000+) (性别和最高证书、倾角、度数)
我有以下代码。但是,当我进入代码的 One hot encoding 部分时出现错误。我在 Visual Studio 上使用 python。我尝试将分类字段更改为“年龄”,但它不起作用。代码如下。请问我该如何解决?谢谢。
# %% read dataframe from part1
import pandas as pd
df = pd.read_pickle("data.pkl")
#%%
import numpy as np
bins = [0, 30000, 50000, 70000, 100000, np.inf]
names = ['<30000', '30000-50000', '50000-70000', '70000-100000', '100000+']
df['Avg Emp Income Range'] = pd.cut(df['Avg Emp Income'], bins, labels=names)
#%% OHE of Avg empl income
for val in df["Avg Emp Income Range"].unique():
df[f"Avg Emp Income Range_{val}"] = df["Avg Emp Income Range"] == val
#%% selecting data
x= ["Sex","Highest Cert,dip,deg"]
#%%
success = ["Avg Emp Income Range_70000-100000","Avg Emp Income Range_100000+"]
y = success
# %% split into training / testing sets
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(x, y, random_state=123)
#%%
from sklearn.compose import ColumnTransformer
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import OneHotEncoder
import numpy as np
from sklearn.metrics import accuracy_score, f1_score, precision_score, recall_score
enc = OneHotEncoder(handle_unknown="ignore")
ct = ColumnTransformer(
[
("ohe", enc, ["Sex","Highest Cert,dip,deg",])
],
remainder="passthrough",
)
x_train = ct.fit_transform(x_train)
x_test = ct.transform(x_test)
我收到此错误
错误: -------------------------------------------------- ------------------------- ValueError Traceback(最近一次调用 最后)c:\Users\maria\Documents\Project Capstone 2\Z NO\machine L.py in 42) 43 ---> 44 x_train = ct.fit_transform(x_train) 45 x_test = ct.transform(x_test)
c:\Users\maria\Documents\Project Capstone 2\Z NO\venv\lib\site-packages\sklearn\compose_column_transformer.py 在 fit_transform(自我,X,Y) 522 其他: 第523章 --> 524 X = check_X(X) 第525章 526 self._check_n_features(X,重置=真)
c:\Users\maria\Documents\Project Capstone 2\Z NO\venv\lib\site-packages\sklearn\compose_column_transformer.py 在 _check_X(X) 649 如果 hasattr(X, 'array') 或 sparse.issparse(X): 650 返回 X --> 651 返回 check_array(X, force_all_finite='allow-nan', dtype=np.object) 652 653
c:\Users\maria\Documents\Project Capstone 2\Z NO\venv\lib\site-packages\sklearn\utils\validation.py 在 inner_f(*args, **kwargs) 70 未来警告) 71 kwargs.update({k: arg for k, arg in zip(sig.parameters, args)}) ---> 72 返回 f(**kwargs) 第73章 74
c:\Users\maria\Documents\Project Capstone 2\Z NO\venv\lib\site-packages\sklearn\utils\validation.py 在 check_array(数组,accept_sparse,accept_large_sparse,dtype,顺序, 复制,force_all_finite,ensure_2d,allow_nd,ensure_min_samples, ensure_min_features,估计器) 第621章 622 “你的数据有一个单一的特征或 array.reshape(1, -1)” --> 623 "如果它包含一个样本。".format(array)) 624 625 # 未来 np.flexible dtypes 将像 object dtypes 一样处理
ValueError:应为 2D 数组,但得到 1D 数组:array=['Sex']。 如果您的数据有 单一特征或 array.reshape(1, -1) 如果它包含单个样本。
【问题讨论】:
标签: python pandas scikit-learn