python код для поиска значений функций после кластеризации kmeans - PullRequest
0 голосов
/ 02 апреля 2020

Я исследовал способы поиска важных функций (в моем наборе данных всего 9 функций). Для этого есть два метода, но мне трудно написать код python.

I ищу ранжировать каждую из функций, которые влияют на формирование кластера.

  1. Рассчитать дисперсию центроидов для каждого измерения. Измерения с наибольшей дисперсией являются наиболее важными при различении кластеров.

  2. Если у вас есть только небольшое количество переменных, вы можете провести какой-то тест «один-единственный-выход» (удалить 1 вар и повтор кластеризация). Также имейте в виду, что k-means зависит от инициализации, поэтому вы хотите сохранить это исправленным при повторной кластеризации.

Любые python коды для выполнения sh это?

1 Ответ

2 голосов
/ 03 апреля 2020

Рассмотрите возможность выбора функции следующим образом.

import pandas as pd
import numpy as np
import seaborn as sns
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2

# UNIVARIATE SELECTION

data = pd.read_csv('C:\\Users\\Excel\\Desktop\\Briefcase\\PDFs\\1-ALL PYTHON & R CODE SAMPLES\\Feature Selection - Machine Learning\\train.csv')
X = data.iloc[:,0:20]  #independent columns
y = data.iloc[:,-1]    #target column i.e price range

#apply SelectKBest class to extract top 10 best features
bestfeatures = SelectKBest(score_func=chi2, k=10)
fit = bestfeatures.fit(X,y)
dfscores = pd.DataFrame(fit.scores_)
dfcolumns = pd.DataFrame(X.columns)
#concat two dataframes for better visualization 
featureScores = pd.concat([dfcolumns,dfscores],axis=1)
featureScores.columns = ['Specs','Score']  #naming the dataframe columns
print(featureScores.nlargest(10,'Score'))  #print 10 best features


# FEATURE IMPORTANCE
data = pd.read_csv('C:\\your_path\\train.csv')
X = data.iloc[:,0:20]  #independent columns
y = data.iloc[:,-1]    #target column i.e price range
from sklearn.ensemble import ExtraTreesClassifier
import matplotlib.pyplot as plt
model = ExtraTreesClassifier()
model.fit(X,y)
print(model.feature_importances_) #use inbuilt class feature_importances of tree based classifiers
#plot graph of feature importances for better visualization
feat_importances = pd.Series(model.feature_importances_, index=X.columns)
feat_importances.nlargest(10).plot(kind='barh')
plt.show()

enter image description here

# Correlation Matrix with Heatmap
data = pd.read_csv('C:\\your_path\\train.csv')
X = data.iloc[:,0:20]  #independent columns
y = data.iloc[:,-1]    #target column i.e price range
#get correlations of each features in dataset
corrmat = data.corr()
top_corr_features = corrmat.index
plt.figure(figsize=(20,20))
#plot heat map
g=sns.heatmap(data[top_corr_features].corr(),annot=True,cmap="RdYlGn")

enter image description here

Dataset is available here:

https://www.kaggle.com/iabhishekofficial/mobile-price-classification#train.csv
...