import numpy as np from sklearn.datasets import load_iris import pandas as pd import matplotlib.pyplot as plt import seaborn as sb import pingouin as pg from scipy import stats # Датасет Ирисы Фишера iris = load_iris() #iris_pd=pd.DataFrame(data=np.c_[iris['data'], iris['target']], columns=iris['feature_names'] + ['target']) iris_pd=pd.DataFrame(data=np.c_[iris['data']], columns=iris['feature_names']) # Формирование выборок по признакам x1 = np.array(iris_pd['sepal length (cm)']) # первый признак - длина чашелистика x2 = np.array(iris_pd['sepal width (cm)']) # второй признак - ширина чашелистика x3 = np.array(iris_pd['petal length (cm)']) # третий признак - длина лепестка x4 = np.array(iris_pd['petal width (cm)']) # четвертый признак - ширина лепестка # Проверка на нормальность по критерию К-С print('Тест Колмогорова-Смирнова. Уровень значимости a = 0.05') for col in iris['feature_names']: x = iris_pd[col] x_mean, std = np.mean(x), np.std(x, ddof = 1) x_std = (x - x_mean)/std pvalue = stats.kstest(x_std, "norm", alternative='less').pvalue if pvalue > 0.05: result = 'H0 не должна быть отвергнута' else: result = 'H0 должна быть отвергнута' print('Для {}: p-value: {}, так что {}'.format(col, pvalue, result)) # Построение диаграммы Тьюки fig1, axes = plt.subplots(1, 3, figsize=(20, 4)) axes[0].boxplot([x1,x2,x3,x4], tick_labels = ['Sepal Length', 'Sepal Width', 'Petal Length', 'Petal Width']) axes[0].set_title('Диаграмма Тьюки') # Построение тепловой карты парных коэффициентов корреляции corrMatrix = iris_pd.corr() axes[1].set_title('Тепловая карта парных коэфф. корреляции') sb.heatmap(corrMatrix, annot=True, linewidths=0.5, xticklabels = False, yticklabels = False, ax = axes[1]) # Построение тепловой карты частных коэффициентов корреляции pCorrMatrix = iris_pd.pcorr() axes[2].set_title('Тепловая карта частных коэфф. корреляции') sb.heatmap(pCorrMatrix, annot=True, linewidths=0.5, xticklabels = False, yticklabels = False, ax = axes[2]) # Построение гистограмм по выборкам fig2, axes = plt.subplots(2, 2, figsize=(10, 7)) axes[0,0].hist(x1) axes[0,0].set_title('Гисотграмма по значениям X1') axes[0,1].hist(x2) axes[0,1].set_title('Гисотграмма по значениям X2') axes[1,0].hist(x3) axes[1,0].set_title('Гисотграмма по значениям X3') axes[1,1].hist(x4) axes[1,1].set_title('Гисотграмма по значениям X4') plt.show()