Update lab2.py, lab4.py, and 5 more files...
This commit is contained in:
		
							parent
							
								
									7c4a2f3ed6
								
							
						
					
					
						commit
						abf38bce43
					
				@ -7,34 +7,45 @@ class lab2:
 | 
			
		||||
        pass
 | 
			
		||||
 | 
			
		||||
    def main(self):
 | 
			
		||||
        # Данные для графика
 | 
			
		||||
 | 
			
		||||
        # Используем массивы из первой работы
 | 
			
		||||
        x11 = np.random.normal(2, 1, [10, 1])
 | 
			
		||||
        x21 = np.random.normal(6, 2, [10, 1])
 | 
			
		||||
        print(x11,x21)
 | 
			
		||||
 | 
			
		||||
        # Рисуем график
 | 
			
		||||
        # Построение диаграммы рассеяния
 | 
			
		||||
        plt.scatter(x11, x21)
 | 
			
		||||
        plt.xlabel("x")
 | 
			
		||||
        plt.ylabel("y")
 | 
			
		||||
        plt.xlabel("x1")
 | 
			
		||||
        plt.ylabel("x2")
 | 
			
		||||
        plt.title("Диаграмма рассеяния")
 | 
			
		||||
        plt.show()
 | 
			
		||||
 | 
			
		||||
        # Построение гистограммы
 | 
			
		||||
        hist_data = np.vstack((x11, x21))
 | 
			
		||||
        print ("Данные для гистограммы:", hist_data )
 | 
			
		||||
        plt.hist(hist_data)
 | 
			
		||||
        plt.xlabel('Значение признака')
 | 
			
		||||
        plt.ylabel('Частота появления значения признака')
 | 
			
		||||
        plt.title('Гистограмма')
 | 
			
		||||
        plt.hist(hist_data, bins=10)
 | 
			
		||||
        plt.xlabel("Значение признака")
 | 
			
		||||
        plt.ylabel("Количество значений")
 | 
			
		||||
        plt.title("Гистограмма")
 | 
			
		||||
        plt.show()
 | 
			
		||||
 | 
			
		||||
        #  Коробочковая диаграмма
 | 
			
		||||
        plt.boxplot((x11.ravel(), x21.ravel()), notch=True)
 | 
			
		||||
        print("Данные для коробочковой диаграммы",x11.ravel(), x21.ravel())
 | 
			
		||||
        plt.xlabel('№ объекта')
 | 
			
		||||
        plt.ylabel('Значение признака')
 | 
			
		||||
        plt.title('Ящик с усами')
 | 
			
		||||
        # Построение "ящика с усами"
 | 
			
		||||
        boxplot_data = plt.boxplot((x11.ravel(), x21.ravel()), notch=True)
 | 
			
		||||
        plt.xlabel("Массив")
 | 
			
		||||
        plt.ylabel("Значение признака")
 | 
			
		||||
        plt.title("Ящик с усами")
 | 
			
		||||
        plt.xticks([1, 2], ['x11', 'x21'])
 | 
			
		||||
        plt.show()
 | 
			
		||||
 | 
			
		||||
        # Получение данных для таблицы
 | 
			
		||||
        for i, name in enumerate(['x11', 'x21'], start=1):
 | 
			
		||||
            print(f"Данные для {name}:")
 | 
			
		||||
            print(f"Медиана: {boxplot_data['medians'][i-1].get_ydata()[0]}")
 | 
			
		||||
            print(f"Нижняя граница: {boxplot_data['whiskers'][2*(i-1)].get_ydata()[1]}")
 | 
			
		||||
            print(f"Верхняя граница: {boxplot_data['whiskers'][2*(i-1)+1].get_ydata()[1]}")
 | 
			
		||||
            print(f"Нижний квартиль: {boxplot_data['boxes'][i-1].get_ydata()[1]}")
 | 
			
		||||
            print(f"Верхний квартиль: {boxplot_data['boxes'][i-1].get_ydata()[2]}")
 | 
			
		||||
            fliers = boxplot_data['fliers'][i-1].get_ydata()
 | 
			
		||||
            print(f"Выбросы: {', '.join(map(str, fliers)) if fliers.size > 0 else 'Нет выбросов'}")
 | 
			
		||||
 | 
			
		||||
if __name__ == "__main__":
 | 
			
		||||
    l2 = lab2()
 | 
			
		||||
    l2.main()
 | 
			
		||||
 | 
			
		||||
@ -0,0 +1,79 @@
 | 
			
		||||
import numpy as np
 | 
			
		||||
import matplotlib
 | 
			
		||||
import matplotlib.pyplot as plt
 | 
			
		||||
from sklearn.datasets import load_iris
 | 
			
		||||
 | 
			
		||||
class lab4:
 | 
			
		||||
 | 
			
		||||
    def __init__(self):
 | 
			
		||||
        pass
 | 
			
		||||
 | 
			
		||||
    def main(self):
 | 
			
		||||
        matplotlib.use('TkAgg')
 | 
			
		||||
 | 
			
		||||
        # Загрузим данные Ирисов Фишера
 | 
			
		||||
        data = load_iris()
 | 
			
		||||
        X = data.data # признаки ирисов
 | 
			
		||||
        Y = data.target # сорта ирисов
 | 
			
		||||
        Y_str = data.target_names # названия сортов ирисов
 | 
			
		||||
        setosa_inds = Y == np.where(Y_str == "setosa")
 | 
			
		||||
        setosa_data = X[np.ravel(setosa_inds), :]
 | 
			
		||||
        virginica_inds = Y == np.where(Y_str == "virginica")
 | 
			
		||||
        virginica_data = X[np.ravel(virginica_inds), :]
 | 
			
		||||
 | 
			
		||||
        # трехмерная скаттерограмма setosa и virginica
 | 
			
		||||
        fig = plt.figure()
 | 
			
		||||
        ax = plt.axes(projection='3d')
 | 
			
		||||
        ax.set_title('Cкаттерограмма setosa и virginica')
 | 
			
		||||
 | 
			
		||||
        x = setosa_data[:, 1]
 | 
			
		||||
        y = setosa_data[:, 3]
 | 
			
		||||
        z = setosa_data[:, 0]
 | 
			
		||||
        ax.scatter(x, y, z, c='blue')
 | 
			
		||||
 | 
			
		||||
        x = virginica_data[:, 1]
 | 
			
		||||
        y = virginica_data[:, 3]
 | 
			
		||||
        z = virginica_data[:, 0]
 | 
			
		||||
        ax.scatter(x, y, z, c='red')
 | 
			
		||||
        ax.set_xlabel('Ширина чашелистика')
 | 
			
		||||
        ax.set_ylabel('Ширина лепестка')
 | 
			
		||||
        ax.set_zlabel('Длина чашелистика')
 | 
			
		||||
 | 
			
		||||
        plt.show()
 | 
			
		||||
 | 
			
		||||
        # разница средних значений по всем признакам
 | 
			
		||||
        diff_mean = np.mean(setosa_data, axis=0) - np.mean(virginica_data, axis=0)
 | 
			
		||||
        print ('Разница средних значений:', diff_mean)
 | 
			
		||||
 | 
			
		||||
        # сумма матриц ковариации
 | 
			
		||||
        sum_covariance = np.cov(setosa_data, rowvar=0) + np.cov(virginica_data, rowvar=0)
 | 
			
		||||
        print ('Сумма матриц ковариации:',sum_covariance)
 | 
			
		||||
 | 
			
		||||
        # ненормированный весовой вектор
 | 
			
		||||
        W = np.matmul(np.linalg.inv(sum_covariance), diff_mean)
 | 
			
		||||
        print ('Ненормируемый весовой вектор:',W)
 | 
			
		||||
 | 
			
		||||
        # нормируемирование весового вектора
 | 
			
		||||
        w = W/np.linalg.norm(W)
 | 
			
		||||
        print ('Нормируемый весовой вектор:', w)
 | 
			
		||||
 | 
			
		||||
        # проекции исходных объектов на полученный весовой вектор
 | 
			
		||||
        proj_setosa = np.matmul(setosa_data, w)
 | 
			
		||||
        print ('Проекция сетоса', proj_setosa)
 | 
			
		||||
        proj_virginica = np.matmul(virginica_data, w)
 | 
			
		||||
 | 
			
		||||
        #Гистограмма проекций объектов на весовой вектор
 | 
			
		||||
        hist_data = np.vstack((proj_setosa, proj_virginica))
 | 
			
		||||
        plt.hist(hist_data.T)
 | 
			
		||||
        print ('Значения гистограммы', hist_data.T)
 | 
			
		||||
        plt.xlabel('Значение проекции объекта')
 | 
			
		||||
        plt.ylabel('Проекция на весовой вектор')
 | 
			
		||||
        plt.title('Гистограмма')
 | 
			
		||||
        plt.show()
 | 
			
		||||
        lim=(np.mean(proj_setosa)+np.mean(proj_virginica))/2
 | 
			
		||||
        print(lim)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
if __name__ == "__main__":
 | 
			
		||||
    l4 = lab4()
 | 
			
		||||
    l4.main()
 | 
			
		||||
@ -0,0 +1,85 @@
 | 
			
		||||
import matplotlib.pyplot as plt
 | 
			
		||||
import matplotlib
 | 
			
		||||
from sklearn.datasets import load_iris
 | 
			
		||||
from sklearn.decomposition._pca import PCA
 | 
			
		||||
import numpy as np
 | 
			
		||||
 | 
			
		||||
class lab5:
 | 
			
		||||
 | 
			
		||||
    def __init__(self):
 | 
			
		||||
        pass
 | 
			
		||||
 | 
			
		||||
    def main(self):
 | 
			
		||||
 | 
			
		||||
        matplotlib.use('TkAgg')
 | 
			
		||||
 | 
			
		||||
        # Загружаем данные ирисов
 | 
			
		||||
        data = load_iris()
 | 
			
		||||
        X = data.data # признаки ирисов
 | 
			
		||||
        Y = data.target # сорта ирисов
 | 
			
		||||
        Y_str = data.target_names # названия сортов ирисов
 | 
			
		||||
 | 
			
		||||
        # setosa
 | 
			
		||||
        setosa_inds = Y == np.where(Y_str == "setosa")
 | 
			
		||||
        setosa_data = X[np.ravel(setosa_inds), :]
 | 
			
		||||
        # versicolor
 | 
			
		||||
        versicolor_inds = Y == np.where(Y_str == "versicolor")
 | 
			
		||||
        versicolor_data = X[np.ravel(versicolor_inds), :]
 | 
			
		||||
        # virginica
 | 
			
		||||
        virginica_inds = Y == np.where(Y_str == "virginica")
 | 
			
		||||
        virginica_data = X[np.ravel(virginica_inds), :]
 | 
			
		||||
 | 
			
		||||
        plt.scatter(setosa_data[:, 1], setosa_data [:, 2], marker="+", label='Setosa')
 | 
			
		||||
        plt.scatter(virginica_data[:, 1], virginica_data[:, 2], marker=".", label='Vergisicа')
 | 
			
		||||
        plt.title('Скаттерограмма Setosa и Virginica')
 | 
			
		||||
        plt.xlabel('Ширина чашелистика (см)')
 | 
			
		||||
        plt.ylabel('Ширина лепестка (см)')
 | 
			
		||||
        plt.legend()
 | 
			
		||||
        plt.show()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        # Выполняем PCA для сокращения размерности до 2D
 | 
			
		||||
        PCA_obj = PCA(n_components=2) # Две главные компоненты
 | 
			
		||||
        N = len(setosa_data)
 | 
			
		||||
        data_0 = np.vstack((setosa_data, virginica_data))
 | 
			
		||||
        reduced_data_0 = PCA_obj.fit_transform(data_0)
 | 
			
		||||
        print (reduced_data_0)
 | 
			
		||||
 | 
			
		||||
        #Скаттерограмма объекты сортов ирисов в пространстве главных компонент
 | 
			
		||||
        plt.scatter(reduced_data_0[0:N, 0], reduced_data_0[0:N, 1], marker=".", label='Setosa')
 | 
			
		||||
        plt.scatter(reduced_data_0[N:, 0], reduced_data_0[N:, 1], marker="*", label='Virginica')
 | 
			
		||||
        plt.xlabel("Главная компонента 1")
 | 
			
		||||
        plt.ylabel("Главная компонента 2")
 | 
			
		||||
        plt.title("Скатерограмма Setosa и Virginica")
 | 
			
		||||
        plt.legend()
 | 
			
		||||
        plt.show()
 | 
			
		||||
 | 
			
		||||
        # Для всех Сортов
 | 
			
		||||
        plt.scatter(setosa_data[:, 1], setosa_data [:, 2], marker="+", label='Setosa')
 | 
			
		||||
        plt.scatter(versicolor_data[:, 1], versicolor_data[:, 2], marker=".", label='Versicolor')
 | 
			
		||||
        plt.scatter(virginica_data[:, 1], virginica_data[:, 2], marker=".", label='Vergisicа')
 | 
			
		||||
        plt.title('Скаттерограмма для всех сортов ирисов')
 | 
			
		||||
        plt.xlabel('Ширина чашелистика (см)')
 | 
			
		||||
        plt.ylabel('Ширина лепестка (см)')
 | 
			
		||||
        plt.legend()
 | 
			
		||||
        plt.show()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        data = np.vstack((setosa_data, versicolor_data, virginica_data))
 | 
			
		||||
        reduced_data = PCA_obj.fit_transform(data)
 | 
			
		||||
 | 
			
		||||
        #Скаттерограмма объекты сортов ирисов в пространстве главных компонент
 | 
			
		||||
        plt.scatter(reduced_data[0:N, 0], reduced_data[0:N, 1], marker="+", label='Setosa')
 | 
			
		||||
        plt.scatter(reduced_data[N:2*N, 0], reduced_data[N:2*N, 1], marker=".", label='Versicolor')
 | 
			
		||||
        plt.scatter(reduced_data[2*N:, 0], reduced_data[2*N:, 1], marker="*", label='Virginica')
 | 
			
		||||
        plt.xlabel("Главная компонента 1")
 | 
			
		||||
        plt.ylabel("Главная компонента 2")
 | 
			
		||||
        plt.title("Скатерограмма всех сортов")
 | 
			
		||||
        plt.legend()
 | 
			
		||||
        plt.show()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
if __name__ == "__main__":
 | 
			
		||||
    l5 = lab5()
 | 
			
		||||
    l5.main()
 | 
			
		||||
@ -0,0 +1,98 @@
 | 
			
		||||
import numpy as np
 | 
			
		||||
import matplotlib.pyplot as plt
 | 
			
		||||
import pandas as pd
 | 
			
		||||
import matplotlib
 | 
			
		||||
 | 
			
		||||
class lab6:
 | 
			
		||||
 | 
			
		||||
    def __init__(self):
 | 
			
		||||
        pass
 | 
			
		||||
 | 
			
		||||
    def main(self):
 | 
			
		||||
 | 
			
		||||
        matplotlib.use('TkAgg')
 | 
			
		||||
 | 
			
		||||
        #создание массивов
 | 
			
		||||
        g1 = [[0.7, 0.3, 1.2],
 | 
			
		||||
            [0.5, 0.7, 1.0],
 | 
			
		||||
            [0.4, 1.0, 0.4],
 | 
			
		||||
            [0.7, 0.7, 1.0],
 | 
			
		||||
            [0.6, 0.6, 1.5],
 | 
			
		||||
            [0.6, 0.6, 1.2],
 | 
			
		||||
            [0.6, 0.5, 1.0],
 | 
			
		||||
            [0.4, 0.9, 0.6],
 | 
			
		||||
            [0.5, 0.6, 1.1],
 | 
			
		||||
            [0.8, 0.3, 1.2]]
 | 
			
		||||
        g2 = [[0.4, 0.2, 0.8],
 | 
			
		||||
            [0.2, 0.2, 0.7],
 | 
			
		||||
            [0.9, 0.3, 0.5],
 | 
			
		||||
            [0.8, 0.3, 0.6],
 | 
			
		||||
            [0.5, 0.6, 0.4],
 | 
			
		||||
            [0.6, 0.5, 0.7],
 | 
			
		||||
            [0.4, 0.4, 1.2],
 | 
			
		||||
            [0.6, 0.3, 1.0],
 | 
			
		||||
            [0.3, 0.2, 0.6],
 | 
			
		||||
            [0.5, 0.5, 0.8]]
 | 
			
		||||
        # Создание датафреймов
 | 
			
		||||
        df_g1 = pd.DataFrame(g1, columns=['X1', 'Y1', 'Z1'])
 | 
			
		||||
        df_g2 = pd.DataFrame(g2, columns=['X2', 'Y2', 'Z2'])
 | 
			
		||||
        # Объединение датафреймов
 | 
			
		||||
        df = pd.concat([df_g1, df_g2], axis=1)
 | 
			
		||||
        # п3: построение скаттерограммы
 | 
			
		||||
        fig = plt.figure()
 | 
			
		||||
        ax = fig.add_subplot(111, projection='3d')
 | 
			
		||||
        # Наносим точки на график
 | 
			
		||||
        ax.scatter(df.iloc[:, 0],
 | 
			
		||||
            df.iloc[:, 1],
 | 
			
		||||
            df.iloc[:, 2],
 | 
			
		||||
            color='midnightblue')
 | 
			
		||||
        ax.scatter(df.iloc[:, 3],
 | 
			
		||||
            df.iloc[:, 4],
 | 
			
		||||
            df.iloc[:, 5],
 | 
			
		||||
            color='darkred')
 | 
			
		||||
        ax.set_xlabel('1 признак')
 | 
			
		||||
        ax.set_ylabel('2 признак')
 | 
			
		||||
        ax.set_zlabel('3 признак')
 | 
			
		||||
        plt.legend(['g1', 'g2'])
 | 
			
		||||
        plt.show()
 | 
			
		||||
 | 
			
		||||
        # п2: последовательное обучение с коррекцией ошибки
 | 
			
		||||
        one = np.ones((10, 1))
 | 
			
		||||
        g1 = np.hstack((g1, one))
 | 
			
		||||
        g2 = np.hstack((g2, one))
 | 
			
		||||
        g2 = (-1)*np.array(g2)
 | 
			
		||||
        g = np.vstack((g1, g2))
 | 
			
		||||
        W = np.mean(g1, axis=0) - np.mean(g2, axis=0)
 | 
			
		||||
        w = W/np.linalg.norm(W)
 | 
			
		||||
        proj1=np.matmul(g,w)
 | 
			
		||||
        print (proj1)
 | 
			
		||||
        plt.figure(3)
 | 
			
		||||
        plt.subplot(1, 2, 1)
 | 
			
		||||
        plt.hist(proj1.T[0:9], bins= 10,color = ('firebrick'), alpha=0.7, edgecolor = 'black',label='g1')
 | 
			
		||||
        plt.hist((-1)*proj1.T[10:19], bins= 10,color = ('indigo'), alpha=0.7, edgecolor ='black',label='g2')
 | 
			
		||||
        plt.legend()
 | 
			
		||||
        plt.xlabel('Значение')
 | 
			
		||||
        plt.ylabel('Количество')
 | 
			
		||||
        plt.title('Гистограмма первого приближения')
 | 
			
		||||
        learn_coeff = 0.1
 | 
			
		||||
        while min(proj1)<0:
 | 
			
		||||
            for ind, data_sample in enumerate(g):
 | 
			
		||||
                proj1[ind] = np.matmul(data_sample, w)
 | 
			
		||||
                if proj1[ind]<0:
 | 
			
		||||
                    w = w + data_sample*learn_coeff
 | 
			
		||||
                proj = np.matmul(g, w)
 | 
			
		||||
        v1 = np.matmul(g, w)
 | 
			
		||||
        # Построение гистограммы проекций
 | 
			
		||||
        plt.subplot(1, 2, 2)
 | 
			
		||||
        plt.hist(v1.T[0:9], bins= 10,color = ('firebrick'), alpha=0.7, edgecolor = 'black',label='g1')
 | 
			
		||||
        plt.hist((-1)*v1.T[10:19], bins= 10,color = ('indigo'), alpha=0.7, edgecolor ='black',label='g2')
 | 
			
		||||
        plt.xlabel('Значение')
 | 
			
		||||
        plt.ylabel('Количество')
 | 
			
		||||
        plt.title('Гистограмма после обучения')
 | 
			
		||||
        plt.legend()
 | 
			
		||||
        plt.show()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
if __name__ == "__main__":
 | 
			
		||||
    l6 = lab6()
 | 
			
		||||
    l6.main()
 | 
			
		||||
							
								
								
									
										143
									
								
								app/labs/lab7.py
									
									
									
									
									
								
							
							
						
						
									
										143
									
								
								app/labs/lab7.py
									
									
									
									
									
								
							@ -0,0 +1,143 @@
 | 
			
		||||
import numpy as np
 | 
			
		||||
import matplotlib.pyplot as plt
 | 
			
		||||
import sklearn.metrics
 | 
			
		||||
from sklearn.datasets import load_iris
 | 
			
		||||
from sklearn.model_selection import train_test_split
 | 
			
		||||
from sklearn.neighbors import KNeighborsClassifier
 | 
			
		||||
import matplotlib
 | 
			
		||||
 | 
			
		||||
class lab7:
 | 
			
		||||
 | 
			
		||||
    def __init__(self):
 | 
			
		||||
        pass
 | 
			
		||||
 | 
			
		||||
    def main(self):
 | 
			
		||||
        matplotlib.use('TkAgg')
 | 
			
		||||
 | 
			
		||||
        # Загружаем данные ирисов
 | 
			
		||||
        data = load_iris()
 | 
			
		||||
        X = data.data  # Признаки ирисов
 | 
			
		||||
        Y = data.target  # Сорта ирисов
 | 
			
		||||
        label = Y  # Используем Y в качестве меток классов для классификации
 | 
			
		||||
        Y_str = data.target_names  # Названия сортов ирисов
 | 
			
		||||
 | 
			
		||||
        # setosa
 | 
			
		||||
        setosa_inds = Y == np.where(Y_str == "setosa")[0][0]
 | 
			
		||||
        setosa_data = X[setosa_inds, :]
 | 
			
		||||
        # versicolor
 | 
			
		||||
        versicolor_inds = Y == np.where(Y_str == "versicolor")[0][0]
 | 
			
		||||
        versicolor_data = X[versicolor_inds, :]
 | 
			
		||||
        # virginica
 | 
			
		||||
        virginica_inds = Y == np.where(Y_str == "virginica")[0][0]
 | 
			
		||||
        virginica_data = X[virginica_inds, :]
 | 
			
		||||
 | 
			
		||||
        # Определяем функцию классификации
 | 
			
		||||
        def classification(data, label, k):
 | 
			
		||||
            X_train, X_test, y_train, y_test = train_test_split(data, label, random_state=10)  #Разделение данных
 | 
			
		||||
            knn = KNeighborsClassifier(n_neighbors=k, metric='euclidean')  # Создание KNN-классификатора
 | 
			
		||||
            knn.fit(X_train, y_train)
 | 
			
		||||
            predicted_data = knn.predict(X_test)
 | 
			
		||||
            report = sklearn.metrics.classification_report(y_test, predicted_data)
 | 
			
		||||
 | 
			
		||||
        # Пример вызова функции классификации
 | 
			
		||||
        setosa_data = sklearn.preprocessing.normalize(setosa_data)
 | 
			
		||||
        versicolor_data = sklearn.preprocessing.normalize(versicolor_data)
 | 
			
		||||
        virginica_data = sklearn.preprocessing.normalize(virginica_data)
 | 
			
		||||
        data_all = np.vstack((setosa_data,versicolor_data,virginica_data))
 | 
			
		||||
 | 
			
		||||
        fig, axs = plt.subplots(2, 3, figsize=(12,8),dpi=160)
 | 
			
		||||
        axs[0, 0].scatter(data_all[:50, 0], data_all[:50, 1], marker='*')
 | 
			
		||||
        axs[0, 0].scatter(data_all[50:100, 0], data_all[50:100, 1], marker='^')
 | 
			
		||||
        axs[0, 0].scatter(data_all[100:, 0], data_all[100:, 1], marker='+')
 | 
			
		||||
        axs[0, 0].title.set_text('features 1 and 2')
 | 
			
		||||
 | 
			
		||||
        axs[0, 1].scatter(data_all[:50, 0], data_all[:50, 2], marker='*')
 | 
			
		||||
        axs[0, 1].scatter(data_all[50:100, 0], data_all[50:100, 2], marker='^')
 | 
			
		||||
        axs[0, 1].scatter(data_all[100:, 0], data_all[100:, 2], marker='+')
 | 
			
		||||
        axs[0, 1].title.set_text('features 1 and 3')
 | 
			
		||||
 | 
			
		||||
        axs[0, 2].scatter(data_all[:50, 0], data_all[:50, 3], marker='*')
 | 
			
		||||
        axs[0, 2].scatter(data_all[50:100, 0], data_all[50:100, 3], marker='^')
 | 
			
		||||
        axs[0, 2].scatter(data_all[100:, 0], data_all[100:, 3], marker='+')
 | 
			
		||||
        axs[0, 2].title.set_text('features 1 and 4')
 | 
			
		||||
 | 
			
		||||
        axs[1, 0].scatter(data_all[:50, 1], data_all[:50, 2], marker='*',)
 | 
			
		||||
        axs[1, 0].scatter(data_all[50:100, 1], data_all[50:100, 2], marker='^')
 | 
			
		||||
        axs[1, 0].scatter(data_all[100:, 1], data_all[100:, 2], marker='+')
 | 
			
		||||
        axs[1, 0].title.set_text('features 2 and 3')
 | 
			
		||||
 | 
			
		||||
        axs[1, 1].scatter(data_all[:50, 1], data_all[:50, 3], marker='*')
 | 
			
		||||
        axs[1, 1].scatter(data_all[50:100, 1], data_all[50:100, 3], marker='^')
 | 
			
		||||
        axs[1, 1].scatter(data_all[100:, 1], data_all[100:, 3], marker='+')
 | 
			
		||||
        axs[1, 1].title.set_text('features 2 and 4')
 | 
			
		||||
 | 
			
		||||
        axs[1, 2].scatter(data_all[:50, 2], data_all[:50, 3], marker='*')
 | 
			
		||||
        axs[1, 2].scatter(data_all[50:100, 2], data_all[50:100, 3], marker='^')
 | 
			
		||||
        axs[1, 2].scatter(data_all[100:, 2], data_all[100:, 3], marker='+')
 | 
			
		||||
        axs[1, 2].title.set_text('features 3 and 4')
 | 
			
		||||
        plt.show()
 | 
			
		||||
 | 
			
		||||
        data = np.hstack((data_all[:,0].reshape(150,1),data_all[:,1].reshape(150,1)))
 | 
			
		||||
        print('Количество соседей = 2:')
 | 
			
		||||
        classification(data,label,2)
 | 
			
		||||
        print('Количество соседей = 5:')
 | 
			
		||||
        classification(data,label,5)
 | 
			
		||||
        print('Количество соседей = 20:')
 | 
			
		||||
        classification(data,label,20)
 | 
			
		||||
        print('Количество соседей = 70:')
 | 
			
		||||
        classification(data,label,70)
 | 
			
		||||
        print('///////////////////////////////////////////////////////////////////')
 | 
			
		||||
        data = np.hstack((data_all[:,0].reshape(150,1),data_all[:,2].reshape(150,1)))
 | 
			
		||||
        print('Количество соседей = 2:')
 | 
			
		||||
        classification(data,label,2)
 | 
			
		||||
        print('Количество соседей = 5:')
 | 
			
		||||
        classification(data,label,5)
 | 
			
		||||
        print('Количество соседей = 20:')
 | 
			
		||||
        classification(data,label,20)
 | 
			
		||||
        print('Количество соседей = 70:')
 | 
			
		||||
        classification(data,label,70)
 | 
			
		||||
        print('///////////////////////////////////////////////////////////////////')
 | 
			
		||||
        data = np.hstack((data_all[:,0].reshape(150,1),data_all[:,3].reshape(150,1)))
 | 
			
		||||
        print('Количество соседей = 2:')
 | 
			
		||||
        classification(data,label,2)
 | 
			
		||||
        print('Количество соседей = 5:')
 | 
			
		||||
        classification(data,label,5)
 | 
			
		||||
        print('Количество соседей = 20:')
 | 
			
		||||
        classification(data,label,20)
 | 
			
		||||
        print('Количество соседей = 70:')
 | 
			
		||||
        classification(data,label,70)
 | 
			
		||||
        print('///////////////////////////////////////////////////////////////////')
 | 
			
		||||
        data = np.hstack((data_all[:,1].reshape(150,1),data_all[:,2].reshape(150,1)))
 | 
			
		||||
        print('Количество соседей = 2:')
 | 
			
		||||
        classification(data,label,2)
 | 
			
		||||
        print('Количество соседей = 5:')
 | 
			
		||||
        classification(data,label,5)
 | 
			
		||||
        print('Количество соседей = 20:')
 | 
			
		||||
        classification(data,label,20)
 | 
			
		||||
        print('Количество соседей = 70:')
 | 
			
		||||
        classification(data,label,70)
 | 
			
		||||
        print('///////////////////////////////////////////////////////////////////')
 | 
			
		||||
        data = np.hstack((data_all[:,1].reshape(150,1),data_all[:,3].reshape(150,1)))
 | 
			
		||||
        print('Количество соседей = 2:')
 | 
			
		||||
        classification(data,label,2)
 | 
			
		||||
        print('Количество соседей = 5:')
 | 
			
		||||
        classification(data,label,5)
 | 
			
		||||
        print('Количество соседей = 20:')
 | 
			
		||||
        classification(data,label,20)
 | 
			
		||||
        print('Количество соседей = 70:')
 | 
			
		||||
        classification(data,label,70)
 | 
			
		||||
        print('///////////////////////////////////////////////////////////////////')
 | 
			
		||||
        data = np.hstack((data_all[:,2].reshape(150,1),data_all[:,3].reshape(150,1)))
 | 
			
		||||
        print('Количество соседей = 2:')
 | 
			
		||||
        classification(data,label,2)
 | 
			
		||||
        print('Количество соседей = 5:')
 | 
			
		||||
        classification(data,label,5)
 | 
			
		||||
        print('Количество соседей = 20:')
 | 
			
		||||
        classification(data,label,20)
 | 
			
		||||
        print('Количество соседей = 70:')
 | 
			
		||||
        classification(data,label,70)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
if __name__ == "__main__":
 | 
			
		||||
    l7 = lab7()
 | 
			
		||||
    l7.main()
 | 
			
		||||
							
								
								
									
										5
									
								
								main.py
									
									
									
									
									
								
							
							
						
						
									
										5
									
								
								main.py
									
									
									
									
									
								
							@ -2,10 +2,5 @@ from app.utils.config import debug
 | 
			
		||||
from app.menu_load import menu
 | 
			
		||||
 | 
			
		||||
if __name__ == "__main__":
 | 
			
		||||
    if debug == True:
 | 
			
		||||
        print("Running in debug mode...")
 | 
			
		||||
        from test_module.debug_main import debug_main_start
 | 
			
		||||
        debug_main_start()
 | 
			
		||||
    else:
 | 
			
		||||
    mn = menu()
 | 
			
		||||
    mn.main_menu()
 | 
			
		||||
 | 
			
		||||
@ -1,3 +1,4 @@
 | 
			
		||||
numpy==1.24.4
 | 
			
		||||
matplotlib==3.7.5
 | 
			
		||||
scikit-learn==1.3.2
 | 
			
		||||
pandas==2.2.3
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user