После выполнения k-средних на моих данных и разделения моих наблюдений на различные кластеры я пытался построить график моей полиномиальной регрессии. Однако это довольно грязно, и не так, как я ожидал, что полиномиальная линия будет выглядеть. Я понимаю, что сортировка х, вероятно, поможет мне решить эту проблему. Но как мне отсортировать ось х? Я искал ответ, но я не нашел ничего, что могло бы мне помочь. Я новичок в python, и я уже несколько недель пытаюсь найти хороший сюжет, и это сводит меня с ума.
участок:
код:
import numpy as np
from sklearn.cluster import KMeans
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
from sklearn.preprocessing import StandardScaler
import pandas as pd
from sklearn.metrics import mean_squared_error, r2_score
import matplotlib.pyplot as plt
df = pd.read_csv('D:\Mall_Customers.csv', usecols = ['Age', 'Annual Income (k$)','Spending Score (1-100)'])
x = StandardScaler().fit_transform(df)
kmeans = KMeans(n_clusters=5, max_iter=100, random_state=0)
y_kmeans= kmeans.fit_predict(x)
mydict = {i: np.where(kmeans.labels_ == i)[0] for i in range(kmeans.n_clusters)}
dictlist = []
for key, value in mydict.items():
temp = [key,value]
dictlist.append(temp)
df0 = df[df.index.isin(mydict[2].tolist())]
X = df0[['Age', 'Annual Income (k$)',]]
Y = df0['Spending Score (1-100)']
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(X, Y, test_size = 0.3, random_state=0)
poly_reg = PolynomialFeatures()
X_polynom = poly_reg.fit_transform(x_train)
PolyReg = LinearRegression()
PolyReg.fit(X_polynom, y_train)
plt.scatter(x_train.iloc[:, 1], y_train, color='red')
plt.plot(x_train, PolyReg.predict(poly_reg.fit_transform(x_train)), color='blue')
plt.xlabel('Age. Annual income')
plt.ylabel('Spending Score')
plt.show()