Compare commits
2 Commits
orlov_arte
...
almukhamme
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
52ec47d3be | ||
| a8c58683dd |
BIN
almukhammetov_bulat_lab_5/1.png
Normal file
BIN
almukhammetov_bulat_lab_5/1.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 35 KiB |
BIN
almukhammetov_bulat_lab_5/2.png
Normal file
BIN
almukhammetov_bulat_lab_5/2.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 247 KiB |
89
almukhammetov_bulat_lab_5/README.md
Normal file
89
almukhammetov_bulat_lab_5/README.md
Normal file
@@ -0,0 +1,89 @@
|
||||
Вариант 2
|
||||
|
||||
Задание:
|
||||
Использовать регрессию по варианту для данных из таблицы 1 по варианту(таблица 10), самостоятельно сформулировав задачу. Оценить, насколько хорошо она подходит для решения сформулированной вами задачи
|
||||
|
||||
Вариант 2 Логистическая регрессия
|
||||
|
||||
Предсказание медианной стоимости жилья на основе всех доступных признаков.
|
||||
|
||||
|
||||
Данные:
|
||||
Данный набор данных использовался во второй главе недавней книги Аурелиена Жерона "Практическое машинное обучение с помощью Scikit-Learn и TensorFlow". Он служит отличным введением в реализацию алгоритмов машинного обучения, потому что требует минимальной предварительной обработки данных, содержит легко понимаемый список переменных и находится в оптимальном размере, который не слишком мал и не слишком большой.
|
||||
|
||||
Данные содержат информацию о домах в определенном районе Калифорнии и некоторую сводную статистику на основе данных переписи 1990 года. Следует отметить, что данные не прошли предварительную очистку, и для них требуются некоторые этапы предварительной обработки. Столбцы включают в себя следующие переменные, их названия весьма наглядно описывают их суть:
|
||||
|
||||
долгота longitude
|
||||
|
||||
широта latitude
|
||||
|
||||
средний возраст жилья median_house_value
|
||||
|
||||
общее количество комнат total_rooms
|
||||
|
||||
общее количество спален total_bedrooms
|
||||
|
||||
население population
|
||||
|
||||
домохозяйства households
|
||||
|
||||
медианный доход median_income
|
||||
|
||||
Запуск:
|
||||
Запустите файл lab5.py
|
||||
|
||||
Описание программы:
|
||||
|
||||
Загрузка данных:
|
||||
|
||||
1. Используется библиотека pandas для чтения данных из CSV-файла "housing.csv" и создания DataFrame.
|
||||
Выбор признаков и целевой переменной:
|
||||
|
||||
2. Определяются признаки (X) и целевая переменная (y), где целевой переменной является "median_house_value", а признаками — все столбцы, за исключением "longitude", "latitude" и "ocean_proximity".
|
||||
Обработка пропущенных значений:
|
||||
|
||||
3. Применяется SimpleImputer с стратегией 'mean' для заполнения пропущенных значений средними значениями в признаках.
|
||||
|
||||
4. Применяется train_test_split для разбиения данных на обучающий, валидационный и тестовый наборы.
|
||||
Создание и обучение модели линейной регрессии:
|
||||
|
||||
5. Инициализируется и обучается модель LinearRegression на обучающем наборе.
|
||||
Вывод коэффициентов и пересечения:
|
||||
|
||||
6. Выводятся коэффициенты и пересечение линейной регрессии, найденные моделью в процессе обучения.
|
||||
Предсказание значений на тестовом наборе:
|
||||
|
||||
7. Производится предсказание значений целевой переменной на тестовом наборе с использованием обученной модели.
|
||||
|
||||
Оценка модели:
|
||||
|
||||
1. Рассчитываются значения R^2 для обучающего, валидационного и тестового наборов для оценки соответствия модели данным.
|
||||
Оценка качества предсказаний:
|
||||
|
||||
2. Рассчитываются среднеквадратичная ошибка (MSE) и корень из среднеквадратичной ошибки (RMSE) для оценки точности предсказаний.
|
||||
Визуализация предсказаний:
|
||||
|
||||
3. Строится график рассеяния для визуального сравнения фактических и предсказанных значений на тестовом наборе.
|
||||
|
||||
Результаты:
|
||||
|
||||

|
||||
|
||||
Выводы:
|
||||
|
||||
Оценка результатов:
|
||||
|
||||
1. Коэффициенты линейной регрессии:
|
||||
|
||||
- Полученные коэффициенты для каждого признака показывают, как сильно он влияет на целевую переменную (медианную стоимость жилья). Например, положительные коэффициенты, такие как 1.91e+03 и 1.27e+02, указывают на положительную корреляцию с целевой переменной, тогда как отрицательные, например, -1.89e+01 и -3.25e+01, указывают на отрицательную корреляцию.
|
||||
|
||||
2. Пересечение линейной регрессии:
|
||||
- Значение пересечения (-47499.49) представляет оценку целевой переменной, когда все признаки равны нулю.
|
||||
|
||||
3. R^2 (коэффициент детерминации):
|
||||
- R^2 измеряет, насколько хорошо модель соответствует данным. Значения около 0.56 для обучающего, валидационного и тестового наборов говорят о том, что модель объясняет примерно 56% дисперсии в данных. Это приемлемый результат, но есть пространство для улучшений.
|
||||
|
||||
4. Среднеквадратичная ошибка (MSE) и корень из среднеквадратичной ошибки (RMSE):
|
||||
- MSE составляет 5,931,235,118.49, что является среднеквадратичной разницей между фактическими и предсказанными значениями. RMSE (77014.51) представляет собой среднюю ошибку в предсказаниях в единицах целевой переменной.
|
||||
|
||||
Общий вывод: Результаты говорят о том, что модель демонстрирует неплохое соответствие данным, но есть возможность для улучшений.
|
||||
20641
almukhammetov_bulat_lab_5/housing.csv
Normal file
20641
almukhammetov_bulat_lab_5/housing.csv
Normal file
File diff suppressed because it is too large
Load Diff
68
almukhammetov_bulat_lab_5/lab5.py
Normal file
68
almukhammetov_bulat_lab_5/lab5.py
Normal file
@@ -0,0 +1,68 @@
|
||||
# Использовать регрессию по варианту для данных из таблицы 1 по варианту(таблица 10), самостоятельно
|
||||
# сформулировав задачу. Оценить, насколько хорошо она подходит для решения сформулированной вами задачи
|
||||
|
||||
# Вариант 2 Логистическая регрессия
|
||||
|
||||
# Предсказание медианной стоимости жилья на основе всех доступных признаков.
|
||||
|
||||
import matplotlib.pyplot as plt
|
||||
import pandas as pd
|
||||
import numpy as np
|
||||
import math
|
||||
from sklearn.linear_model import LinearRegression
|
||||
from sklearn.metrics import r2_score
|
||||
from sklearn.model_selection import train_test_split
|
||||
from sklearn.impute import SimpleImputer
|
||||
|
||||
# Загрузка данных
|
||||
df = pd.read_csv('housing.csv')
|
||||
|
||||
# Определение признаков (X) и целевой переменной (y)
|
||||
X = df.drop(columns=["median_house_value", "longitude", "latitude", "ocean_proximity"]).astype(float)
|
||||
y = df['median_house_value'].astype(float)
|
||||
|
||||
# Обработка пропущенных значений с использованием SimpleImputer
|
||||
imputer = SimpleImputer(strategy='mean')
|
||||
X = imputer.fit_transform(X)
|
||||
|
||||
# Разделение данных на обучающий, валидационный и тестовый наборы
|
||||
X_train, X_temp, y_train, y_temp = train_test_split(X, y, test_size=0.4, random_state=0)
|
||||
X_val, X_test, y_val, y_test = train_test_split(X_temp, y_temp, test_size=0.5, random_state=0)
|
||||
|
||||
# Создание и обучение модели линейной регрессии
|
||||
linear_model = LinearRegression()
|
||||
linear_model.fit(X_train, y_train)
|
||||
|
||||
# Вывод коэффициентов и пересечения
|
||||
print(f'Коэффициенты линейной регрессии: {linear_model.coef_}')
|
||||
print(f'Пересечение линейной регрессии: {linear_model.intercept_}')
|
||||
|
||||
# Предсказание значений на тестовом наборе
|
||||
y_pred = linear_model.predict(X_test)
|
||||
|
||||
# Оценка модели
|
||||
train_score = linear_model.score(X_train, y_train)
|
||||
val_score = linear_model.score(X_val, y_val)
|
||||
test_score = linear_model.score(X_test, y_test)
|
||||
|
||||
print(f'R^2 на обучающем наборе: {train_score}')
|
||||
print(f'R^2 на валидационном наборе: {val_score}')
|
||||
print(f'R^2 на тестовом наборе: {test_score}')
|
||||
|
||||
# Оценка качества предсказаний
|
||||
MSE = np.square(np.subtract(y_test, y_pred)).mean()
|
||||
RMSE = math.sqrt(MSE)
|
||||
print(f'Среднеквадратичная ошибка: {MSE}')
|
||||
print(f'Корень из среднеквадратичной ошибки: {RMSE}')
|
||||
|
||||
|
||||
# Визуализация предсказаний
|
||||
plt.figure(figsize=(8, 6), dpi=80)
|
||||
plt.scatter(y_test, y_pred, alpha=0.2, color='slateblue')
|
||||
m, b = np.polyfit(y_test, y_pred, 1)
|
||||
plt.plot(y_test, m * y_test + b, color='midnightblue')
|
||||
plt.xlabel('Фактическое значение (тестовый набор)', fontsize=14)
|
||||
plt.ylabel('Предсказанное значение (тестовый набор)', fontsize=14)
|
||||
plt.title('Линейная регрессия: предсказанные и фактические значения (тестовый набор)', fontsize=16)
|
||||
plt.grid(linewidth=0.5)
|
||||
plt.show()
|
||||
118
kutygin_andre_lab_3/README.md
Normal file
118
kutygin_andre_lab_3/README.md
Normal file
@@ -0,0 +1,118 @@
|
||||
**Задание**
|
||||
***
|
||||
Решите с помощью библиотечной реализации дерева решений задачу из лабораторной работы «Веб-сервис «Дерево решений» по предмету «Методы искусственного интеллекта»на 99% ваших данных. Проверьте работу модели на оставшемся проценте, сделайте вывод
|
||||
|
||||
**Как запустить лабораторную**
|
||||
***
|
||||
Запустить файл main.py
|
||||
|
||||
**Используемые технологии**
|
||||
***
|
||||
Библиотеки pandas, scikit-learn, matplotlib, их компоненты
|
||||
|
||||
**Описание лабораторной (программы)**
|
||||
***
|
||||
В данном коде мы создаем и обучаем модель дерева решений для прогнозирования инцидентов с НЛО на основе набора данных.
|
||||
|
||||
1. В первой строке кода мы загружаем данные из CSV-файла 'ufo_data_nuforc.csv' с помощью функции pd.read_csv(). Эти данные содержат информацию о различных инцидентах с НЛО.
|
||||
2. Далее мы выбираем набор признаков, в данном случае, эти признаки - населенность и время, которые будут использоваться для обучения модели, и сохраняем их в переменную features.
|
||||
3. Затем преобразуем категориальные признаки в числовой вид при помощи функции pd.get_dummies(). Это необходимо, так как модель дерева решений работает только с числовыми данными.
|
||||
4. После этого мы разделяем данные на обучающую и тестовую выборки с помощью функции train_test_split(). Обучающая выборка будет использоваться для обучения модели, а тестовая - для проверки ее точности.
|
||||
5. Создаем модель дерева решений с помощью класса DecisionTreeClassifier() из библиотеки sklearn.tree.
|
||||
6. Обучаем модель на обучающей выборке с помощью метода fit(). В процессе обучения модель настраивает параметры дерева решений, чтобы лучше предсказывать целевой признак.
|
||||
7. После обучения модели, мы производим прогнозы на тестовых данных с помощью метода predict().
|
||||
8. Оцениваем точность модели на тестовой выборке с помощью метода accuracy_score() из библиотеки sklearn.metrics. Этот метод сравнивает фактические значения целевого признака с предсказанными и возвращает точность модели.
|
||||
9. Наконец, выводим точность модели на тестовой выборке, чтобы оценить, насколько хорошо модель предсказывает инциденты с НЛО.
|
||||
10. Также, код визуализирует данные в виде графика с помощью библиотеки matplotlib.pyplot, отображая фактические значения целевого признака и предсказания модели. Это помогает наглядно оценить, насколько близки предсказания модели к реальным значениям.
|
||||
**Результат**
|
||||
***
|
||||
Точность модели на тестовой выборке: 0.1377245508982036
|
||||
Прогнозы по оставшемуся проценту данных: 'cylinder' 'circle' 'sphere' 'disk' 'disk' 'fireball' 'disk' 'oval'
|
||||
'circle' 'disk' 'disk' 'other' 'light' 'light' 'oval' 'fireball' 'light'
|
||||
'rectangle' 'chevron' 'unknown' 'sphere' 'oval' 'light' 'circle'
|
||||
'unknown' 'unknown' 'disk' 'triangle' 'triangle' 'unknown' 'formation'
|
||||
'unknown' 'cigar' 'unknown' 'light' 'other' 'rectangle' 'light' 'other'
|
||||
'light' 'cylinder' 'delta' 'sphere' 'other' 'changing' 'fireball'
|
||||
'cylinder' 'cigar' 'circle' 'triangle' 'light' 'fireball' 'fireball'
|
||||
'sphere' 'circle' 'light' 'chevron' 'oval' 'oval' 'light' 'unknown'
|
||||
'triangle' 'other' 'rectangle' 'triangle' 'triangle' 'flash' 'unknown'
|
||||
'sphere' 'unknown' 'other' 'circle' 'oval' 'light' 'oval' 'formation'
|
||||
'sphere' 'triangle' 'changing' 'sphere' 'oval' 'unknown' 'circle'
|
||||
'circle' 'flash' 'light' 'light' 'sphere' 'other' 'other' 'egg' 'unknown'
|
||||
'other' 'light' 'light' 'disk' 'diamond' 'oval' 'unknown' 'light'
|
||||
'triangle' 'other' 'light' 'disk' 'unknown' 'light' 'changing' 'sphere'
|
||||
'triangle' 'circle' 'flash' 'sphere' 'light' 'unknown' 'oval' 'formation'
|
||||
'light' 'circle' 'unknown' 'other' 'triangle' 'other' 'light' 'disk'
|
||||
'formation' 'oval' 'triangle' 'triangle' 'light' 'formation' 'oval'
|
||||
'light' 'light' 'oval' 'disk' 'sphere' 'egg' 'unknown' 'unknown'
|
||||
'unknown' 'light' 'disk' 'changing' 'light' 'light' 'circle' 'circle'
|
||||
'formation' 'light' 'light' 'cigar' 'light' 'triangle' 'oval' 'fireball'
|
||||
'cylinder' 'other' 'circle' 'egg' 'changing' 'triangle' 'circle' 'other'
|
||||
'oval' 'disk' 'light' 'flash' 'fireball' 'circle' 'circle' 'circle'
|
||||
'circle' 'light' 'disk' 'fireball' 'other' 'sphere' 'light' 'changing'
|
||||
'cigar' 'light' 'cylinder' 'rectangle' 'chevron' 'light' 'light' 'light'
|
||||
'light' 'circle' 'circle' 'light' 'light' 'circle' 'sphere' 'triangle'
|
||||
'light' 'egg' 'circle' 'fireball' 'sphere' 'sphere' 'triangle' 'light'
|
||||
'other' 'cigar' 'sphere' 'sphere' 'fireball' 'light' 'light' 'disk'
|
||||
'oval' 'oval' 'other' 'cigar' 'triangle' 'light' 'light' 'light' 'disk'
|
||||
'light' 'light' 'light' 'light' 'other' 'light' 'teardrop' 'triangle'
|
||||
'teardrop' 'fireball' 'sphere' 'cylinder' 'fireball' 'circle' 'egg'
|
||||
'sphere' 'disk' 'chevron' 'triangle' 'light' 'other' 'light' 'circle'
|
||||
'rectangle' 'fireball' 'formation' 'light' 'light' 'circle' 'light'
|
||||
'light' 'formation' 'light' 'triangle' 'light' 'oval' 'light' 'unknown'
|
||||
'fireball' 'diamond' 'light' 'circle' 'light' 'triangle' 'oval' 'oval'
|
||||
'cylinder' 'circle' 'light' 'disk' 'light' 'sphere' 'circle' 'light'
|
||||
'triangle' 'light' 'fireball' 'triangle' 'light' 'flash' 'triangle' 'egg'
|
||||
'disk' 'oval' 'circle' 'flash' 'light' 'oval' 'sphere' 'light' 'triangle'
|
||||
'other' 'chevron' 'other' 'circle' 'unknown' 'unknown' 'sphere' 'light'
|
||||
'cigar' 'light' 'fireball' 'circle' 'diamond' 'fireball' 'triangle'
|
||||
'diamond' 'sphere' 'circle' 'chevron' 'cylinder' 'light' 'circle'
|
||||
'fireball' 'unknown' 'light' 'circle' 'fireball' 'light' 'fireball'
|
||||
'fireball' 'fireball' 'light' 'sphere' 'light' 'sphere' 'sphere'
|
||||
'formation' 'light' 'fireball' 'fireball' 'disk' 'disk' 'circle'
|
||||
'rectangle' 'unknown' 'disk' 'unknown' 'disk' 'triangle' 'other' 'sphere'
|
||||
'diamond' 'light' 'light' 'unknown' 'sphere' 'circle' 'disk' 'circle'
|
||||
'oval' 'changing' 'other' 'other' 'disk' 'unknown' 'unknown' 'disk'
|
||||
'rectangle' 'disk' 'light' 'oval' 'unknown' 'sphere' 'light' 'changing'
|
||||
'disk' 'disk' 'other' 'other' 'disk' 'cylinder' 'disk' 'rectangle'
|
||||
'light' 'disk' 'disk' 'light' 'fireball' 'formation' 'cigar' 'oval'
|
||||
'fireball' 'unknown' 'disk' 'light' 'light' 'triangle' 'triangle' 'light'
|
||||
'sphere' 'triangle' 'sphere' 'circle' 'light' 'oval' 'oval' 'circle'
|
||||
'oval' 'rectangle' 'disk' 'oval' 'light' 'light' 'other' 'cigar'
|
||||
'triangle' 'disk' 'cigar' 'other' 'triangle' 'egg' 'unknown' 'triangle'
|
||||
'light' 'triangle' 'disk' 'changing' 'triangle' 'disk' 'disk' 'rectangle'
|
||||
'other' 'triangle' 'triangle' 'formation' 'triangle' 'egg' 'sphere'
|
||||
'fireball' 'triangle' 'rectangle' 'light' 'triangle' 'triangle' 'other'
|
||||
'light' 'light' 'disk' 'fireball' 'light' 'disk' 'oval' 'triangle'
|
||||
'other' 'fireball' 'light' 'light' 'triangle' 'unknown' 'cigar' 'light'
|
||||
'unknown' 'chevron' 'formation' 'disk' 'cigar' 'light' 'sphere' 'cigar'
|
||||
'unknown' 'triangle' 'other' 'light' 'light' 'triangle' 'diamond' 'light'
|
||||
'triangle' 'oval' 'changing' 'light' 'flash' 'circle' 'oval' 'other'
|
||||
'sphere' 'circle' 'triangle' 'unknown' 'teardrop' 'unknown' 'fireball'
|
||||
'light' 'light' 'cigar' 'cigar' 'light' 'fireball' 'other' 'egg' 'light'
|
||||
'other' 'unknown' 'unknown' 'changing' 'circle' 'light' 'other' 'unknown'
|
||||
'unknown' 'light' 'other' 'light' 'unknown' 'cylinder' 'triangle'
|
||||
'circle' 'light' 'circle' 'circle' 'circle' 'light' 'light' 'changing'
|
||||
'changing' 'circle' 'circle' 'triangle' 'triangle' 'light' 'light'
|
||||
'light' 'light' 'other' 'changing' 'triangle' 'cylinder' 'light'
|
||||
'unknown' 'circle' 'disk' 'sphere' 'oval' 'formation' 'teardrop'
|
||||
'triangle' 'chevron' 'light' 'unknown' 'unknown' 'other' 'egg' 'circle'
|
||||
'oval' 'cigar' 'unknown' 'chevron' 'oval' 'cigar' 'fireball' 'circle'
|
||||
'unknown' 'light' 'sphere' 'fireball' 'changing' 'light' 'circle'
|
||||
'unknown' 'fireball' 'light' 'sphere' 'light' 'formation' 'circle'
|
||||
'fireball' 'formation' 'formation' 'formation' 'light' 'other' 'light'
|
||||
'light' 'circle' 'diamond' 'oval' 'circle' 'oval' 'triangle' 'light'
|
||||
'disk' 'light' 'other' 'triangle' 'triangle' 'cylinder' 'disk' 'cylinder'
|
||||
'light' 'oval' 'cigar' 'circle' 'disk' 'light' 'unknown' 'circle' 'other'
|
||||
'light' 'light' 'light' 'unknown' 'triangle' 'other' 'disk' 'cylinder'
|
||||
'triangle' 'oval' 'disk' 'light' 'triangle' 'circle' 'light' 'other'
|
||||
'light' 'other' 'circle' 'disk' 'other' 'triangle' 'oval' 'unknown'
|
||||
'light' 'triangle' 'unknown' 'circle' 'unknown' 'light' 'fireball'
|
||||
'fireball' 'rectangle' 'light' 'formation' 'unknown' 'light' 'light'
|
||||
'formation' 'fireball' 'light' 'light' 'other' 'unknown' 'light'
|
||||
'triangle' 'fireball' 'triangle' 'triangle' 'flash' 'circle' 'triangle'
|
||||
'disk' 'light' 'unknown' 'light' 'light' 'fireball' 'circle' 'unknown'
|
||||
'unknown' 'circle' 'disk' 'chevron' 'disk' 'disk' 'triangle' 'light'
|
||||
'light' 'disk'
|
||||
|
||||
***Вывод:*** Наша модель дерева решений показала низкую точность предсказаний (Точность модели на тестовой выборке: 0.1377245508982036), что означает, что она не очень хорошо предсказывает форму НЛО на основе выбранных признаков (население и время). Из-за чего можно сделать вывод, что возможно, эти признаки недостаточно информативны или недостаточно связаны с формой НЛО.
|
||||
39
kutygin_andre_lab_3/main.py
Normal file
39
kutygin_andre_lab_3/main.py
Normal file
@@ -0,0 +1,39 @@
|
||||
import pandas as pd
|
||||
from sklearn.tree import DecisionTreeClassifier
|
||||
from sklearn.metrics import accuracy_score
|
||||
from sklearn.model_selection import train_test_split
|
||||
|
||||
# Загрузка данных
|
||||
data = pd.read_csv('ufo_sighting_data.csv')
|
||||
|
||||
# Выбор признаков
|
||||
features = [ 'length_of_encounter_seconds', 'latitude', 'longitude']
|
||||
target = 'UFO_shape'
|
||||
# Удаление строк содержащих NaN
|
||||
data.dropna(inplace=True)
|
||||
|
||||
# Удаление столбцов содержащих NaN
|
||||
data.dropna(axis='columns', inplace=True)
|
||||
|
||||
# Разделение данных на обучающую и тестовую выборки
|
||||
train_data, test_data, train_labels, test_labels = train_test_split(data[features], data[target], test_size=0.2, random_state=42)
|
||||
|
||||
# Создание и обучение модели дерева решений
|
||||
model = DecisionTreeClassifier()
|
||||
model.fit(train_data, train_labels)
|
||||
|
||||
# Прогнозирование на тестовой выборке
|
||||
predictions = model.predict(test_data)
|
||||
|
||||
# Оценка точности модели
|
||||
accuracy = accuracy_score(test_labels, predictions)
|
||||
print('Точность модели на тестовой выборке:', accuracy)
|
||||
|
||||
# Прогнозирование на оставшемся проценте данных
|
||||
remaining_data = data.drop(test_data.index)
|
||||
remaining_predictions = model.predict(remaining_data[features])
|
||||
|
||||
# Вывод результатов
|
||||
print('Прогнозы по оставшемуся проценту данных:', remaining_predictions)
|
||||
|
||||
# Сделайте необходимые выводы
|
||||
1
kutygin_andre_lab_3/ufo_sighting_data.csv
Normal file
1
kutygin_andre_lab_3/ufo_sighting_data.csv
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user