python 逻辑回归sklearn_python – 分类:使用sklearn进行PCA和逻辑回归

第0步:问题描述

我有一个分类问题,即我想基于数字特征的集合,使用逻辑回归和运行主成分分析(PCA)来预测二进制目标.

我有2个数据集:df_train和df_valid(分别是训练集和验证集)作为pandas数据框,包含特征和目标.作为第一步,我使用了get_dummies pandas函数将所有分类变量转换为boolean.例如,我会:

n_train = 10

np.random.seed(0)

df_train = pd.DataFrame({"f1":np.random.random(n_train),\

"f2": np.random.random(n_train),\

"f3":np.random.randint(0,2,n_train).astype(bool),\

"target":np.random.randint(0,n_train).astype(bool)})

In [36]: df_train

Out[36]:

f1 f2 f3 target

0 0.548814 0.791725 False False

1 0.715189 0.528895 True True

2 0.602763 0.568045 False True

3 0.544883 0.925597 True True

4 0.423655 0.071036 True True

5 0.645894 0.087129 True False

6 0.437587 0.020218 True True

7 0.891773 0.832620 True False

8 0.963663 0.778157 False False

9 0.383442 0.870012 True True

n_valid = 3

np.random.seed(1)

df_valid = pd.DataFrame({"f1":np.random.random(n_valid),\

"f2": np.random.random(n_valid),n_valid).astype(bool),n_valid).astype(bool)})

In [44]: df_valid

Out[44]:

f1 f2 f3 target

0 0.417022 0.302333 False False

1 0.720324 0.146756 True False

2 0.000114 0.092339 True True

我现在想应用PCA来减少问题的维数,然后使用sklearn中的LogisticRegression训练并获得我的验证集的预测,但我不确定我遵循的程序是否正确.这是我做的:

第1步:PCA

我的想法是,我需要以与PCA相同的方式转换我的训练和验证设置.换句话说,我不能单独执行PCA.否则,它们将被投射到不同的特征向量上.

from sklearn.decomposition import PCA

pca = PCA(n_components=2) #assume to keep 2 components,but doesn't matter

newdf_train = pca.fit_transform(df_train.drop("target",axis=1))

newdf_valid = pca.transform(df_valid.drop("target",axis=1)) #not sure here if this is right

第二步:Logistic回归

这没有必要,但我更喜欢将事物保存为数据帧:

features_train = pd.DataFrame(newdf_train)

features_valid = pd.DataFrame(newdf_valid)

现在我进行逻辑回归

from sklearn.linear_model import LogisticRegression

cls = LogisticRegression()

cls.fit(features_train,df_train["target"])

predictions = cls.predict(features_valid)

我认为第2步是正确的,但我对第1步有更多疑问:这是我应该链接PCA,然后是分类器的方式吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值