93 lines
4.8 KiB
Python
93 lines
4.8 KiB
Python
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()
|