Commit 177979bf authored by Sergei Efimov's avatar Sergei Efimov

Все задания

parents
{
"cells": [
{
"cell_type": "code",
"execution_count": null,
"id": "596806be",
"metadata": {},
"outputs": [],
"source": [
"using LinearAlgebra\n",
"using Statistics\n",
"using Random\n",
"using Printf\n",
"\n",
"function create_data()\n",
" Random.seed!(1)\n",
" n = 1000\n",
" \n",
" area = rand(20:200, n)\n",
" rooms = rand(1:4, n)\n",
" age = rand(0:50, n)\n",
" floor = rand(1:22, n)\n",
" distance = rand(1.0:30.0, n)\n",
" \n",
" X = hcat(ones(n), area, rooms, age, floor, distance)\n",
" \n",
" true_coeffs = [1500000, 120000, 800000, -25000, 50000, -75000]\n",
" \n",
" y = X * true_coeffs + randn(n) * 500000\n",
" \n",
" return X, y, [\"Intercept\", \"Area\", \"Rooms\", \"Age\", \"Floor\", \"Distance\"]\n",
"end\n",
"\n",
"function split_data(X, y, test_size=0.2)\n",
" \n",
" n = size(X, 1)\n",
" indices = shuffle(1:n)\n",
" test_rows = Int(round(n * test_size))\n",
" \n",
" train_indices = indices[1:end-test_rows]\n",
" test_indices = indices[end-test_rows+1:end]\n",
" \n",
" X_train, y_train = X[train_indices, :], y[train_indices]\n",
" X_test, y_test = X[test_indices, :], y[test_indices]\n",
" \n",
" return X_train, y_train, X_test, y_test\n",
"end\n",
"\n",
"function linear_regression(X, y)\n",
" coefficients = X \\ y\n",
" return coefficients\n",
"end\n",
"\n",
"function evaluate_model(X_test, y_test, coefficients)\n",
" predictions = X_test * coefficients\n",
" mse = mean((predictions .- y_test).^2)\n",
" rmse = sqrt(mse)\n",
" mae = mean(abs.(predictions .- y_test))\n",
" r_squared = 1 - sum((y_test .- predictions).^2) / sum((y_test .- mean(y_test)).^2)\n",
"\n",
" println(\"Метрики качества:\")\n",
" @printf \"MSE: %.2f\\n\" mse\n",
" @printf \"RMSE: %.2f руб\\n\" rmse\n",
" @printf \"MAE: %.2f руб\\n\" mae \n",
" @printf \"R²: %.4f\\n\" r_squared\n",
" \n",
" return predictions, (mse=mse, rmse=rmse, mae=mae, r_squared=r_squared)\n",
"end\n",
"\n",
"function main()\n",
" println(\"=\"^50)\n",
" println(\"ПРОЕКТ: ПРОГНОЗИРОВАНИЕ ЦЕН НА НЕДВИЖИМОСТЬ\")\n",
" println(\"=\"^50)\n",
" \n",
" X, y, names = create_data()\n",
" \n",
" X_train, y_train, X_test, y_test = split_data(X, y)\n",
" println()\n",
" \n",
" coefficients = linear_regression(X_train, y_train)\n",
" println()\n",
" \n",
" println(\"Коэффициенты модели:\")\n",
" for (i, name) in enumerate(names)\n",
" println(\"$name: \", round(coefficients[i], digits=2))\n",
" end\n",
" println()\n",
" \n",
" predictions, metrics = evaluate_model(X_test, y_test, coefficients)\n",
" println()\n",
" \n",
" println(\"Пример прогнозирования для новой квартиры:\")\n",
" println(\"\")\n",
" new_apartment = [2, 38, 1, 13, 18, 20]\n",
" predicted_price = dot(new_apartment, coefficients)\n",
" println(\"Характеристики квартиры:\")\n",
" println(\"Площадь: $(new_apartment[2]) м²\")\n",
" println(\"Количество комнат: $(new_apartment[3])\")\n",
" println(\"Возраст квартиры: $(new_apartment[4]) лет\")\n",
" println(\"Этаж квартиры: $(new_apartment[5])\")\n",
" println(\"Расстояние до центра: $(new_apartment[6]) км\")\n",
" println(\"\")\n",
"\n",
" @printf \"Предсказанная цена: %.2f рублей\\n\" predicted_price\n",
" \n",
" return coefficients, metrics\n",
"end\n",
"\n",
"if abspath(PROGRAM_FILE) == @__FILE__\n",
" coefficients, metrics = main()\n",
"end"
]
},
{
"cell_type": "markdown",
"id": "3582b451",
"metadata": {},
"source": [
"# Комментарии по коду\n",
"## Функция create_data\n",
"Функция генерирует данные из 1000 наблюдений для обучения модели.\n",
"\n",
"Характеристики данных:\n",
"- Площадь квартиры\n",
"- Количество комнат\n",
"- Год постройки квартиры\n",
"- Этаж квартиры\n",
"- Расстояние до центра города \n",
"\n",
"Эти характеристики заносятся в матрицу Х.\n",
"\n",
"Также есть истинные коэффициенты квартиры:\n",
"- Базовая стоимость квартиры\n",
"\t+ 1.500.000 рублей (1) - для регионов\n",
"\t+ 2.250.000 рублей (1,5) - для Санкт-Петербурга\n",
"\t+ 3.000.000 рублей (2) - для Москвы\n",
"- Площадь квартиры (+120.000 рублей / м²)\n",
"- Количество комнат (+800.000 рублей / комната)\n",
"- Год постройки квартиры (-25.000 рублей / год)\n",
"- Этаж квартиры (+50.000 рублей / этаж)\n",
"- Расстояние до центра города (-75.000 рублей / км)\n",
"\n",
"В итоге в переменной y мы получаем вектор цен для 1.000 квартир\n",
"\n",
"## Функция split_data\n",
"Функция разделяет данные на обучающую (80%) и тестовую (20%) выборки. Для того, чтобы не было упорядоченности данных массив из 1000 чисел перемешивается.\n",
"\n",
"## Функция linear_regression\n",
"Функция находит коэффициенты линейной модели, которые лучше всего описывают зависимость между характеристиками и ценой.\n",
"\n",
"## Функция evaluate_model\n",
"Функция оценивает точность модели, используя различные метрики.\n",
"\n",
"Используемые метрики:\n",
"- MSE (Среднеквадратичное отклонение)\n",
"- RMSE (Среднеквадратическая ошибка)\n",
"- MAE (Средняя абсолютная ошибка)\n",
"- R² (Коэффициент детерминации)\n",
"\n",
"## Функция main\n",
"Основная функция программы, в которой выводится пример прогнозирования цены для новой квартиры."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Julia 1.11.6",
"language": "julia",
"name": "julia-1.11"
},
"language_info": {
"file_extension": ".jl",
"mimetype": "application/julia",
"name": "julia",
"version": "1.11.6"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
@echo off
chcp 65001 >nul
echo.
:: Проверка прав администратора
net session >nul 2>&1
if %errorLevel% neq 0 (
echo ОШИБКА: Требуются права администратора!
pause
exit /b 1
)
:: Установка Chocolatey
where choco >nul 2>&1
if errorlevel 1 (
echo Установка Chocolatey...
powershell -Command "Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))"
if errorlevel 1 (
echo Ошибка установки Chocolatey!
pause
exit /b 1
)
) else (
echo Chocolatey уже установлен
)
echo.
echo Установка ПО...
choco install vscode -y || echo Ошибка установки vscode
choco install docker-desktop -y || echo Ошибка установки docker-desktop
choco install pycharm-community -y || echo Ошибка установки pycharm-community
choco install git -y || echo Ошибка установки git
choco install github-desktop -y || echo Ошибка установки github-desktop
choco install python -y || echo Ошибка установки python
choco install rust -y || echo Ошибка установки rust
choco install 7zip -y || echo Ошибка установки 7zip
choco install googlechrome -y || echo Ошибка установки googlechrome
choco install firefox -y || echo Ошибка установки firefox
choco install wsl2 -y || echo Ошибка установки wsl2
choco install julia -y || echo Ошибка установки julia
choco install maxima -y || echo Ошибка установки maxima
choco install gimp -y || echo Ошибка установки gimp
choco install miktex -y || echo Ошибка установки miktex
choco install texstudio -y || echo Ошибка установки texstudio
choco install anaconda3 -y || echo Ошибка установки anaconda3
choco install sumatrapdf -y || echo Ошибка установки sumatrapdf
choco install flameshot -y || echo Ошибка установки flameshot
echo.
echo Установка расширений VSCode...
powershell -Command "code --install-extension ms-python.python" || echo Ошибка установки расширения Python
powershell -Command "code --install-extension rust-lang.rust-analyzer" || echo Ошибка установки расширения Rust
powershell -Command "code --install-extension julialang.language-julia" || echo Ошибка установки расширения Julia
echo.
echo Установка WSL...
wsl --install --no-distribution || echo Ошибка установки WSL
wsl --install -d Ubuntu-22.04 || echo Ошибка установки Ubuntu 22.04
wsl --install -d Ubuntu-24.04 || echo Ошибка установки Ubuntu 24.04
echo.
echo Установка завершена успешно!
echo.
pause
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment