逻辑回归中Pandas处理分类变量出现map/rdd属性错误如何解决
错误原因
map是Pandas单列(Series对象)的专属方法,你使用双括号[['income']]取数得到的是二维结构的DataFrame对象,没有该属性,触发第一个报错rdd是PySpark框架下DataFrame的专属属性,你使用的标准Pandas库不存在该属性,触发第二个报错
修正后可直接运行的代码
import pandas as pd import statsmodels.api as sm adult_train = pd.read_csv("C:/.../adult_training.csv") adult_test = pd.read_csv("C:/.../adult_test.csv") # 拆分特征变量X和目标变量y X = adult_train[['age', 'hours-per-week', 'num']] X = sm.add_constant(X) # 单括号取income列得到Series,直接调用map完成分类值转数值 y = adult_train['income'].map({'<=50K': 0, '>50K': 1}).astype(int) logreg01 = sm.Logit(y, X).fit()
改动说明
- 移除了
y赋值时多余的pd.DataFrame()封装和.rdd调用 - 将取income列的双括号改为单括号,得到单列Series对象后再调用
map方法完成映射
运行上述代码即可正常完成逻辑回归模型拟合。
内容的提问来源于stack exchange,提问作者Learning and Improving
相关产品推荐
相关产品推荐

