簡體   English   中英

不能連接 ' 類型的 object<class 'numpy.ndarray'> '; 只有 Series 和 DataFrame 對象有效</class>

[英]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_trainy_train的原因。 因為X_train是 NumPy 數組,而y_train是 Pandas DataFrame

要使用 concat, X_trainy_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()

它會起作用的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM