为什么我不能 运行 这个带有一维数组的逻辑回归脚本 Python?
Why can't I run this logistic regression script with a 1d array in Python?
我试图弄清楚哪些变量会影响 toAnalyse
变量。为此,我使用 LogisticRegression 方法。当我 运行 下面的代码时,出现以下错误:
代码:
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)
错误:
ValueError: y should be a 1d array, got an array of shape (258631, 2) instead.
这似乎是正确的,因为当我打印 y.info()
时,我返回:
<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)
时,我得到的错误是其中根本没有更多变量:
ValueError: y should be a 1d array, got an array of shape (258631, 0) instead.
这是怎么回事,我如何 运行 使用一维数组?
看起来像
之后
df = pd.concat([
pd.DataFrame(data, columns=data.columns),
pd.DataFrame(data, columns=['toAnalyse'])
], axis=1)
您的数据框中有两次 'toAnalyse'
列。这首先是 y
形状错误的原因。当 drop
查找列名时,您最终在 drop 语句后没有任何列。
为了解决这个问题,我只需删除带有 df
的语句。 data
似乎包含了你需要的一切,所以
X = data.drop(['notimportant', 'test', 'toAnalyse'], axis=1)
y = data['toAnalyse']
应该可以。
我试图弄清楚哪些变量会影响 toAnalyse
变量。为此,我使用 LogisticRegression 方法。当我 运行 下面的代码时,出现以下错误:
代码:
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)
错误:
ValueError: y should be a 1d array, got an array of shape (258631, 2) instead.
这似乎是正确的,因为当我打印 y.info()
时,我返回:
<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)
时,我得到的错误是其中根本没有更多变量:
ValueError: y should be a 1d array, got an array of shape (258631, 0) instead.
这是怎么回事,我如何 运行 使用一维数组?
看起来像
之后df = pd.concat([
pd.DataFrame(data, columns=data.columns),
pd.DataFrame(data, columns=['toAnalyse'])
], axis=1)
您的数据框中有两次 'toAnalyse'
列。这首先是 y
形状错误的原因。当 drop
查找列名时,您最终在 drop 语句后没有任何列。
为了解决这个问题,我只需删除带有 df
的语句。 data
似乎包含了你需要的一切,所以
X = data.drop(['notimportant', 'test', 'toAnalyse'], axis=1)
y = data['toAnalyse']
应该可以。