首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么我不能在Python中使用一维数组运行这个逻辑回归脚本?

为什么我不能在Python中使用一维数组运行这个逻辑回归脚本?
EN

Stack Overflow用户
提问于 2021-11-19 10:39:24
回答 1查看 31关注 0票数 0

我正在尝试找出哪些变量会影响toAnalyse变量。为此,我使用LogisticRegression方法。当我运行下面的代码时,我得到以下错误:

代码:

代码语言:javascript
运行
复制
import numpy as np
import pandas as pd
from sklearn.datasets import load_breast_cancer
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
from matplotlib import rcParams
from sklearn.linear_model import LogisticRegression

rcParams['figure.figsize'] = 14, 7
rcParams['axes.spines.top'] = False
rcParams['axes.spines.right'] = False

data = pd.read_csv('file.txt', sep=",")

df = pd.concat([
    pd.DataFrame(data, columns=data.columns),
    pd.DataFrame(data, columns=['toAnalyse'])
], axis=1)

X = df.drop(['notimportant', 'test', 'toAnalyse'], axis=1)
y = df['toAnalyse']
#y.drop(y.columns[0], axis=1, inplace=True)   <----------------- From 2 to 0 variables when running this?
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=42)

ss = StandardScaler()
X_train_scaled = ss.fit_transform(X_train)
X_test_scaled = ss.transform(X_test)

错误:

代码语言:javascript
运行
复制
ValueError: y should be a 1d array, got an array of shape (258631, 2) instead.

这似乎是正确的,因为当我打印y.info()时,我会返回:

代码语言:javascript
运行
复制
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 344842 entries, 0 to 344841
Data columns (total 2 columns):
 #   Column             Non-Null Count   Dtype  
---  ------             --------------   -----  
 0   toAnalyse          343480 non-null  float64
 1   toAnalyse          343480 non-null  float64

因此,toAnalyse变量在y中出现了两次。好的,然后我想删除第一行(基于索引),这样我就只剩下一维的行了。然而,当我使用y.drop(y.columns[0], axis=1, inplace=True)时,我得到的错误是它根本没有更多的变量:

代码语言:javascript
运行
复制
ValueError: y should be a 1d array, got an array of shape (258631, 0) instead.

这是怎么回事,我怎么才能用一维数组来运行它呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-19 11:06:40

看起来像是在

代码语言:javascript
运行
复制
df = pd.concat([
    pd.DataFrame(data, columns=data.columns),
    pd.DataFrame(data, columns=['toAnalyse'])
], axis=1)

您的数据帧中有两次'toAnalyse'列。这就是y最初形状错误的原因。当drop查找列名时,在drop语句后没有列。

要解决这个问题,我只需使用df删除该语句。data似乎包含了您需要的所有内容,所以

代码语言:javascript
运行
复制
X = data.drop(['notimportant', 'test', 'toAnalyse'], axis=1)
y = data['toAnalyse']

应该行得通。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70033489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档