from sklearn.datasets import load_iris import numpy as np import matplotlib.pyplot as plt class lab3: def __init__(self): pass def main(self): data = load_iris() X = data.data print('Все данные', data.data) Y = data.target print(data.target) Y_str = data.target_names print(Y_str) setosa_inds = Y == np.where(Y_str == 'setosa') setosa_data = X[np.ravel(setosa_inds), :] print('Индексы setosa', setosa_inds) print('Признаки setosa:', setosa_data) versicolor_inds = Y == np.where(Y_str == 'versicolor') versicolor_data = X[np.ravel(versicolor_inds), :] virginica_inds = Y == np.where(Y_str == 'virginica') virginica_data = X[np.ravel(virginica_inds), :] plt.scatter(setosa_data[:, 0], setosa_data[:, 1]) plt.title('Скаттерограмма setosa по признакам 1 и 2') plt.xlabel('Длина чашелистика') plt.ylabel('Ширина чашелистика') plt.show() plt.scatter(versicolor_data[:, 0], versicolor_data[:, 1]) plt.title('Скаттерограмма versicolor по признакам 1 и 2') plt.xlabel('Длина чашелистика') plt.ylabel('Ширина чашелистика') plt.show() plt.scatter(virginica_data[:, 0], virginica_data[:, 1]) plt.title('Скаттерограмма virginica по признакам 1 и 2') plt.xlabel('Длина чашелистика') plt.ylabel('Ширина чашелистика') plt.show() # расчет статистических характеристик коэф. корреляции для признаков setosa_sl_mean = np.mean(setosa_data[:, 0]) setosa_sl_std = np.std(setosa_data[:, 0]) setosa_sw_mean = np.mean(setosa_data[:, 1]) setosa_sw_std = np.std(setosa_data[:, 1]) setosa_cor = np.corrcoef(setosa_data[:, 0], setosa_data[:, 1])[0, 1] versicolor_sl_mean = np.mean(versicolor_data[:, 0]) versicolor_sl_std = np.std(versicolor_data[:, 0]) versicolor_sw_mean = np.mean(versicolor_data[:, 1]) versicolor_sw_std = np.std(versicolor_data[:, 1]) versicolor_cor = np.corrcoef(versicolor_data[:, 0], versicolor_data[:, 1])[0, 1] virginica_sl_mean = np.mean(virginica_data[:, 0]) virginica_sl_std = np.std(virginica_data[:, 0]) virginica_sw_mean = np.mean(virginica_data[:, 1]) virginica_sw_std = np.std(virginica_data[:, 1]) virginica_cor = np.corrcoef(virginica_data[:, 0], virginica_data[:, 1])[0, 1] print('Setosa: Среднее значение длины чашелистика:', setosa_sl_mean, 'СКО длины чашелистика:', setosa_sl_std, 'Среднее значение ширины чашелистика:', setosa_sw_mean, 'СКО ширины чашелистика:', setosa_sw_std) print('Коэффициент корреляции:', setosa_cor) print('Versicolor: Среднее значение длины чашелистика:', versicolor_sl_mean, 'СКО длины чашелистика:', versicolor_sl_std, 'Среднее значение ширины чашелистика:', versicolor_sw_mean, 'СКО ширины чашелистика:', versicolor_sw_std) print('Коэффициент корреляции:', versicolor_cor) print('Virginica: Среднее значение длины чашелистика:', virginica_sl_mean, 'СКО длины чашелистика:', virginica_sl_std, 'Среднее значение ширины чашелистика:', virginica_sw_mean, 'СКО ширины чашелистика:', virginica_sw_std) print('Коэффициент корреляции:', virginica_cor) # построение гистограммы и коробочковой диаграммы для setosa по признакам 1 и 2 hist_data = np.vstack((setosa_data[:, 0], setosa_data[:, 1])) plt.hist(hist_data.T, label=['Длина чашелистика', 'Ширина чашелистика']) # Настройка графика plt.title('Гистограмма setosa по признакам 1 и 2') plt.xlabel('Значение') plt.ylabel('Частота') plt.legend() plt.show() plt.boxplot((setosa_data[:, 0].ravel(), setosa_data[:, 1].ravel()), notch=False, labels=['Длина чашелистика', 'Ширина чашелистика']) plt.title('Коробочковая диаграмма setosa по признакам 1 и 2') plt.ylabel('Значение') plt.show() if __name__ == "__main__": l3 = lab3() l3.main()