无法连接“<class 'numpy.ndarray'>”类型的对象;只有 Series 和 DataFrame objs 是有效的
cannot concatenate object of type '<class 'numpy.ndarray'>'; only Series and DataFrame objs are valid
我打算在使用 StandardScaler 后使用 pairplot 可视化数据,
但是我的代码产生了以下错误
raise TypeError(msg)
TypeError: cannot concatenate object of type '<class 'numpy.ndarray'>'; only Series and DataFrame objs are valid
完整代码
from matplotlib import pyplot as plt
from sklearn.model_selection import train_test_split
import seaborn as sns
import pandas as pd
import numpy as np
from sklearn.preprocessing import StandardScaler
iris = sns.load_dataset('iris')
X = iris.drop(columns='species')
y = iris['species']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.20, random_state=42)
X_train=StandardScaler().fit_transform(X_train)
sns.pairplot(data=pd.concat([X_train, y_train], axis=1), hue=y_train.name)
plt.show()
使用 StandardScaler
后,你的 X_train(之前是 pd.DataFrame
)变成了 numpy.ndarray
,所以你不能连接 X_train
和 y_train
。因为 X_train
是一个 NumPy 数组而 y_train
是一个 Pandas DataFrame
要使用 concat,X_train
和 y_train
都必须是 Pandas DataFrame,因此请使用此代码将 X_train
转换为 DataFrame。
X_train = StandardScaler().fit_transform(X_train)
X_train = pd.DataFrame(X_train, columns = X.columns)
sns.pairplot(data=pd.concat([X_train, y_train], axis=1), hue=y_train.name)
plt.show()
它会起作用。
我打算在使用 StandardScaler 后使用 pairplot 可视化数据, 但是我的代码产生了以下错误
raise TypeError(msg)
TypeError: cannot concatenate object of type '<class 'numpy.ndarray'>'; only Series and DataFrame objs are valid
完整代码
from matplotlib import pyplot as plt
from sklearn.model_selection import train_test_split
import seaborn as sns
import pandas as pd
import numpy as np
from sklearn.preprocessing import StandardScaler
iris = sns.load_dataset('iris')
X = iris.drop(columns='species')
y = iris['species']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.20, random_state=42)
X_train=StandardScaler().fit_transform(X_train)
sns.pairplot(data=pd.concat([X_train, y_train], axis=1), hue=y_train.name)
plt.show()
使用 StandardScaler
后,你的 X_train(之前是 pd.DataFrame
)变成了 numpy.ndarray
,所以你不能连接 X_train
和 y_train
。因为 X_train
是一个 NumPy 数组而 y_train
是一个 Pandas DataFrame
要使用 concat,X_train
和 y_train
都必须是 Pandas DataFrame,因此请使用此代码将 X_train
转换为 DataFrame。
X_train = StandardScaler().fit_transform(X_train)
X_train = pd.DataFrame(X_train, columns = X.columns)
sns.pairplot(data=pd.concat([X_train, y_train], axis=1), hue=y_train.name)
plt.show()
它会起作用。