![](/img/trans.png)
[英]ValueError: Found array with 0 feature(s) (shape=(546, 0)) while a minimum of 1 is required
[英]raise ValueError ValueError: Found array with 0 feature(s) (shape=(124, 0)) while a minimum of 1 is required
我正在尝试对具有 124 行和 13 个特征的数据集应用 PCA(主成分分析)。 我正在尝试查看使用多少特征(通过逻辑回归)来获得最准确的预测,我在这里有这个代码:
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
df_wine = pd.read_csv('https://archive.ics.uci.edu/ml/'
'machine-learning-databases/wine/wine.data', header=None)
from sklearn.model_selection import train_test_split
X, y = df_wine.iloc[:, 1:].values, df_wine.iloc[:, 0].values
X_train, X_test, y_train, y_test = \
train_test_split(X, y, test_size=0.3, stratify=y, random_state=0)
# standardize the features
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train_std = sc.fit_transform(X_train)
X_test_std = sc.transform(X_test)
from sklearn.linear_model import LogisticRegression
from sklearn.decomposition import PCA
# initializing the PCA transformer and
# logistic regression estimator:
pca = PCA() #prof recommends getting rid of m_components = 3
lr = LogisticRegression()
# dimensionality reduction:
X_train_pca = pca.fit_transform(X_train_std)
X_test_pca = pca.transform(X_test_std)
"""
rows = len(X_train_pca)
columns = len(X_train_pca[0])
print(rows)
print(columns)
"""
# fitting the logistic regression model on the reduced dataset:
for i in range(12):
lr.fit(X_train_pca[:, :i], y_train)
y_train_pca = lr.predict(X_train_pca[:, :i])
print('Training accuracy:', lr.score(X_train_pca[:, :i], y_train))
我收到错误消息: raise ValueError("Found array with %d feature(s) (shape=%s) while" ValueError: Found array with 0 feature(s) (shape=(124, 0)) while a minimum of 1 是必需的。
据我了解,for 循环范围在 12 处是正确的,因为它将通过所有 13 个特征(0 到 12),我试图让 for 循环通过所有特征(通过一个特征进行逻辑回归,然后是两个,然后 3.... 一直到所有 13 个特征,然后查看它们的准确度,看看有多少特征效果最好)。
对于您的错误:
X_train_pca[:, :i]
当i=0
时会给你一个空数组,它作为.fit()
的输入是无效的。
怎么解决:
如果你只想用截距拟合模型,你可以在LogisticRegression()
显式设置fit_intercept=False
并在你的 X 中添加一个额外的列(最左边),填充 1(作为截距)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.