использование анализа основных компонентов для визуализации данных - PullRequest
1 голос
/ 12 февраля 2020

Я пытаюсь использовать pca для визуализации моих данных. У меня есть набор данных с 4 переменными (дата, уровень грунтовых вод, количество осадков, температура) Вот пример моего набора данных . Я хочу видеть, есть ли связь между ливнем и дождем и временами и гулитой.

Я слышал, что могу попробовать это, используя pca или регрессию. Я новичок в этом и немного сбит с толку относительно того, как я могу go сделать это.

Я следовал учебному пособию онлайн, но в конце я получил ошибку:

 >>>> **TypeError: invalid type comparison**. 

Я в замешательстве, потому что цель - это не просто 0 или 1, а уровень грунтовых вод (gwl). Я пытаюсь увидеть, есть ли какая-либо связь между уровнем грунтовых вод и температурой

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

df = pd.read_excel("C:/Users/Tamarie/Downloads/joined1.xlsx")
print(df.dtypes)
df.head()
df.info()

from sklearn.preprocessing import StandardScaler
features = ['rainfall', 'temperature', 'Evapotrans']
# Separating out the features
x = df.loc[:, features].values
# Separating out the target
y = df.loc[:,['gwl']].values
# Standardizing the features
x = StandardScaler().fit_transform(x)

from sklearn.decomposition import PCA
pca = PCA(n_components=2)
principalComponents = pca.fit_transform(x)
principalDf = pd.DataFrame(data = principalComponents
             , columns = ['principal component 1', 'principal component 2'])

finalDf = pd.concat([principalDf, df[['gwl']]], axis = 1)
fig = plt.figure(figsize = (8,8))
ax = fig.add_subplot(1,1,1) 
ax.set_xlabel('Principal Component 1', fontsize = 15)
ax.set_ylabel('Principal Component 2', fontsize = 15)
ax.set_title('2 component PCA', fontsize = 20)
targets = ['gwl']
colors = ['r', 'g', 'b']
for target, color in zip(targets,colors):
    indicesToKeep = finalDf['gwl'] == target
    ax.scatter(finalDf.loc[indicesToKeep, 'principal component 1']
               , finalDf.loc[indicesToKeep, 'principal component 2']
               , c = color
               , s = 50)
ax.legend(targets)
ax.grid()

1 Ответ

0 голосов
/ 12 февраля 2020
targets = ['gwl']
colors = ['r', 'g', 'b']
for target, color in zip(targets,colors):
    indicesToKeep = finalDf['gwl'] == target 

В этой строке вы сравниваете finalDf ['gwl'] список с плавающей точкой с целевым значением строки

Хотя, если вы хотите увидеть, есть ли какая-либо корреляция между уровнем грунтовых вод и температурой

тогда вы можете просто построить график рассеяния между уровнем грунтовых вод и температурным столбцом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...