Compare commits
No commits in common. "main" and "almukhammetov_bulat_lab_6" have entirely different histories.
main
...
almukhamme
143
.idea/workspace.xml
generated
@ -4,9 +4,10 @@
|
||||
<option name="autoReloadType" value="SELECTIVE" />
|
||||
</component>
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="0ceb130e-88da-4a20-aad6-17f5ab4226ac" name="Changes" comment="commit 3">
|
||||
<list default="true" id="0ceb130e-88da-4a20-aad6-17f5ab4226ac" name="Changes" comment="">
|
||||
<change beforePath="$PROJECT_DIR$/.idea/IIS_2023_1.iml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/IIS_2023_1.iml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/misc.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/misc.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/istyukov_timofey_lab1/lab1.py" beforeDir="false" afterPath="$PROJECT_DIR$/istyukov_timofey_lab1/lab1.py" afterDir="false" />
|
||||
</list>
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
@ -42,50 +43,29 @@
|
||||
<option name="hideEmptyMiddlePackages" value="true" />
|
||||
<option name="showLibraryContents" value="true" />
|
||||
</component>
|
||||
<component name="PropertiesComponent"><![CDATA[{
|
||||
"keyToString": {
|
||||
"RunOnceActivity.OpenProjectViewOnStart": "true",
|
||||
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||
"WebServerToolWindowFactoryState": "false",
|
||||
"git-widget-placeholder": "senkin__alexander__lab__1",
|
||||
"last_opened_file_path": "D:/ulstukek/Course4/IIS/labs",
|
||||
"node.js.detected.package.eslint": "true",
|
||||
"node.js.detected.package.tslint": "true",
|
||||
"node.js.selected.package.eslint": "(autodetect)",
|
||||
"node.js.selected.package.tslint": "(autodetect)",
|
||||
"nodejs_package_manager_path": "npm",
|
||||
"settings.editor.selected.configurable": "preferences.sourceCode",
|
||||
"vue.rearranger.settings.migration": "true"
|
||||
<component name="PropertiesComponent">{
|
||||
"keyToString": {
|
||||
"RunOnceActivity.OpenProjectViewOnStart": "true",
|
||||
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||
"WebServerToolWindowFactoryState": "false",
|
||||
"git-widget-placeholder": "senkin__alexander__lab__1",
|
||||
"last_opened_file_path": "D:/ulstukek/Course4/IIS/labs",
|
||||
"node.js.detected.package.eslint": "true",
|
||||
"node.js.detected.package.tslint": "true",
|
||||
"node.js.selected.package.eslint": "(autodetect)",
|
||||
"node.js.selected.package.tslint": "(autodetect)",
|
||||
"nodejs_package_manager_path": "npm",
|
||||
"settings.editor.selected.configurable": "reference.settings.ide.settings.new.ui",
|
||||
"vue.rearranger.settings.migration": "true"
|
||||
}
|
||||
}]]></component>
|
||||
}</component>
|
||||
<component name="RecentsManager">
|
||||
<key name="CopyFile.RECENT_KEYS">
|
||||
<recent name="D:\ulstukek\Course4\IIS\IISLabs\IIS_2023_1\zavrazhnova_svetlana_lab_3" />
|
||||
<recent name="D:\ulstukek\Course4\IIS\IISLabs\IIS_2023_1\zavrazhnova_svetlana_lab_1" />
|
||||
</key>
|
||||
</component>
|
||||
<component name="RunManager" selected="Python.lab1">
|
||||
<configuration name="lab1" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
|
||||
<module name="IIS_2023_1" />
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
<option name="PARENT_ENVS" value="true" />
|
||||
<envs>
|
||||
<env name="PYTHONUNBUFFERED" value="1" />
|
||||
</envs>
|
||||
<option name="SDK_HOME" value="E:\Programms\Python\python.exe" />
|
||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/istyukov_timofey_lab1" />
|
||||
<option name="IS_MODULE_SDK" value="false" />
|
||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/istyukov_timofey_lab1/lab1.py" />
|
||||
<option name="PARAMETERS" value="" />
|
||||
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||
<option name="EMULATE_TERMINAL" value="false" />
|
||||
<option name="MODULE_MODE" value="false" />
|
||||
<option name="REDIRECT_INPUT" value="false" />
|
||||
<option name="INPUT_FILE" value="" />
|
||||
<method v="2" />
|
||||
</configuration>
|
||||
<component name="RunManager">
|
||||
<configuration name="zavrazhnova_svetlana_lab3_2" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
|
||||
<module name="IIS_2023_1" />
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
@ -152,19 +132,13 @@
|
||||
<option name="INPUT_FILE" value="" />
|
||||
<method v="2" />
|
||||
</configuration>
|
||||
<list>
|
||||
<item itemvalue="Python.lab1" />
|
||||
<item itemvalue="Python.zavrazhnova_svetlana_lab3_2" />
|
||||
<item itemvalue="Python.zavrazhnova_svetlana_lab_2" />
|
||||
<item itemvalue="Python.zavrazhnova_svetlana_lab_3_1" />
|
||||
</list>
|
||||
<recent_temporary>
|
||||
<list>
|
||||
<item itemvalue="Python.lab1" />
|
||||
<item itemvalue="Python.zavrazhnova_svetlana_lab_3_1" />
|
||||
<item itemvalue="Python.zavrazhnova_svetlana_lab_2" />
|
||||
<item itemvalue="Python.zavrazhnova_svetlana_lab3_2" />
|
||||
<item itemvalue="Python.zavrazhnova_svetlana_lab3_2" />
|
||||
<item itemvalue="Python.zavrazhnova_svetlana_lab_3_1" />
|
||||
</list>
|
||||
</recent_temporary>
|
||||
</component>
|
||||
@ -179,35 +153,6 @@
|
||||
<workItem from="1697735437405" duration="1706000" />
|
||||
<workItem from="1697740229646" duration="3802000" />
|
||||
</task>
|
||||
<task id="LOCAL-00001" summary="commit 1">
|
||||
<created>1702203771661</created>
|
||||
<option name="number" value="00001" />
|
||||
<option name="presentableId" value="LOCAL-00001" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1702203771661</updated>
|
||||
</task>
|
||||
<task id="LOCAL-00002" summary="commit 2">
|
||||
<created>1702208133904</created>
|
||||
<option name="number" value="00002" />
|
||||
<option name="presentableId" value="LOCAL-00002" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1702208133904</updated>
|
||||
</task>
|
||||
<task id="LOCAL-00003" summary="create README">
|
||||
<created>1702208193675</created>
|
||||
<option name="number" value="00003" />
|
||||
<option name="presentableId" value="LOCAL-00003" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1702208193675</updated>
|
||||
</task>
|
||||
<task id="LOCAL-00004" summary="commit 3">
|
||||
<created>1702208529340</created>
|
||||
<option name="number" value="00004" />
|
||||
<option name="presentableId" value="LOCAL-00004" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1702208529340</updated>
|
||||
</task>
|
||||
<option name="localTasksCounter" value="5" />
|
||||
<servers />
|
||||
</component>
|
||||
<component name="TypeScriptGeneratedFilesManager">
|
||||
@ -224,14 +169,7 @@
|
||||
<entry key="branch">
|
||||
<value>
|
||||
<list>
|
||||
<option value="istyukov_timofey_lab_1" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="user">
|
||||
<value>
|
||||
<list>
|
||||
<option value="*" />
|
||||
<option value="HEAD" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
@ -242,43 +180,8 @@
|
||||
</entry>
|
||||
</map>
|
||||
</option>
|
||||
<option name="RECENT_FILTERS">
|
||||
<map>
|
||||
<entry key="Branch">
|
||||
<value>
|
||||
<list>
|
||||
<RecentGroup>
|
||||
<option name="FILTER_VALUES">
|
||||
<option value="istyukov_timofey_lab_1" />
|
||||
</option>
|
||||
</RecentGroup>
|
||||
<RecentGroup>
|
||||
<option name="FILTER_VALUES">
|
||||
<option value="HEAD" />
|
||||
</option>
|
||||
</RecentGroup>
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="User">
|
||||
<value>
|
||||
<list>
|
||||
<RecentGroup>
|
||||
<option name="FILTER_VALUES">
|
||||
<option value="*" />
|
||||
</option>
|
||||
</RecentGroup>
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
</map>
|
||||
</option>
|
||||
</component>
|
||||
<component name="VcsManagerConfiguration">
|
||||
<MESSAGE value="commit 1" />
|
||||
<MESSAGE value="commit 2" />
|
||||
<MESSAGE value="create README" />
|
||||
<MESSAGE value="commit 3" />
|
||||
<option name="LAST_COMMIT_MESSAGE" value="commit 3" />
|
||||
<component name="com.intellij.coverage.CoverageDataManagerImpl">
|
||||
<SUITE FILE_PATH="coverage/PyCharmProjects$senkin_alexander_lab_1.coverage" NAME="senkin_alexander_lab_1 Coverage Results" MODIFIED="1697744262965" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/senkin_alexander_lab_1" />
|
||||
</component>
|
||||
</project>
|
Before Width: | Height: | Size: 251 KiB |
Before Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 24 KiB |
@ -1,66 +0,0 @@
|
||||
Вариант 2
|
||||
|
||||
Задание:
|
||||
Использовать метод кластеризации по варианту для данных из таблицы 1 по варианту(таблица 9), самостоятельно сформулировав задачу. Интерпретировать результаты и оценить, насколько хорошо он подходит для решения сформулированной вами задачи.
|
||||
|
||||
Данные:
|
||||
Данный набор данных использовался во второй главе недавней книги Аурелиена Жерона "Практическое машинное обучение с помощью Scikit-Learn и TensorFlow". Он служит отличным введением в реализацию алгоритмов машинного обучения, потому что требует минимальной предварительной обработки данных, содержит легко понимаемый список переменных и находится в оптимальном размере, который не слишком мал и не слишком большой.
|
||||
|
||||
Данные содержат информацию о домах в определенном районе Калифорнии и некоторую сводную статистику на основе данных переписи 1990 года. Следует отметить, что данные не прошли предварительную очистку, и для них требуются некоторые этапы предварительной обработки. Столбцы включают в себя следующие переменные, их названия весьма наглядно описывают их суть:
|
||||
|
||||
долгота longitude
|
||||
|
||||
широта latitude
|
||||
|
||||
средний возраст жилья median_house_value
|
||||
|
||||
общее количество комнат total_rooms
|
||||
|
||||
общее количество спален total_bedrooms
|
||||
|
||||
население population
|
||||
|
||||
домохозяйства households
|
||||
|
||||
медианный доход median_income
|
||||
|
||||
Запуск:
|
||||
Запустите файл lab4.py
|
||||
|
||||
Описание программы:
|
||||
|
||||
1. Загружает набор данных из файла 'housing.csv', который содержит информацию о домах в Калифорнии, включая их координаты, возраст, количество комнат, население, доход и другие характеристики.
|
||||
|
||||
2. Предобработка данных: Производится заполнение пропущенных значений медианными значениями и стандартизация данных для более точных результатов кластеризации.
|
||||
|
||||
3. Выбор метода кластеризации: Программа использует метод linkage и евклидовой метрикой для объединения домов в кластеры.
|
||||
|
||||
4. Определение числа кластеров: В данном случае, выбрано 5 кластеров для группировки домов.
|
||||
|
||||
5. Применение кластеризации: Программа выполняет кластеризацию, присваивая каждому дому метку кластера на основе его характеристик.
|
||||
|
||||
6. Визуализация результатов: Результаты кластеризации визуализируются на графике, используя библиотеку seaborn. Каждый дом представлен точкой, где координаты - это возраст дома и общее количество комнат, а размер точки соответствует стоимости жилья.
|
||||
|
||||
7. Добавление информации о кластерах: Дополнительная информация о принадлежности кластерам добавляется к исходным данным.
|
||||
|
||||
8. Программа предоставляет статистический анализ для каждого кластера, включая средние значения, стандартное отклонение и квартили характеристик домов.
|
||||
|
||||
Результаты:
|
||||
|
||||
![Alt text](1.png)
|
||||
|
||||
![Alt text](2.png)
|
||||
|
||||
![Alt text](3.png)
|
||||
|
||||
Выводы:
|
||||
|
||||
Количество кластеров: В данной кластеризации использовано 5 кластеров для группировки домов в Калифорнии на основе их характеристик.
|
||||
|
||||
Характеристики кластеров:
|
||||
|
||||
Кластер 1: Включает дома с высоким средним возрастом жилья и относительно низкой стоимостью жилья. Это могут быть старые дома в более старых районах.
|
||||
Кластер 2: Содержит дома с высокой стоимостью жилья и высокими доходами. Возможно, это элитные районы с дорогим жильем.
|
||||
Кластер 3: Группирует дома с низким средним возрастом жилья и средней стоимостью жилья. Возможно, это новые постройки в развивающихся районах.
|
||||
Кластер 4: Включает дома с разнообразными характеристиками и средней стоимостью жилья. Этот кластер может представлять смешанные районы.
|
||||
Кластер 5: В этот кластер входят дома с низкими доходами и средним возрастом жилья. Возможно, это районы с более доступным жильем.
|
@ -1,51 +0,0 @@
|
||||
# Использовать метод кластеризации по варианту для данных из таблицы 1 по варианту(таблица 9), самостоятельно
|
||||
# сформулировав задачу. Интерпретировать результаты и оценить, насколько хорошо он подходит для решения
|
||||
# сформулированной вами задачи.
|
||||
|
||||
# Кластеризация: Группировка домов на основе их характеристик, таких как широта, долгота, возраст дома,
|
||||
# общее количество комнат и т. д. Выделяем общие особенности или характеристики в различных районах.
|
||||
|
||||
# У меня второй вариант, остаток от деления номера варианта на 5 : 5/2=0 целых, остаток 2, берем второй вариант -
|
||||
# алгоритм кластеризации - linkage
|
||||
|
||||
import matplotlib.pyplot as plt
|
||||
import pandas as pd
|
||||
import seaborn as sns
|
||||
from scipy.cluster.hierarchy import linkage, fcluster
|
||||
from sklearn.preprocessing import StandardScaler
|
||||
|
||||
data = pd.read_csv('housing.csv')
|
||||
|
||||
# Выделение интересующих столбцов
|
||||
features = data[['housing_median_age', 'total_rooms', 'median_house_value']]
|
||||
|
||||
# Заполнение пропущенных значений медианой
|
||||
features = features.fillna(features.median())
|
||||
|
||||
# Стандартизация данных
|
||||
scaler = StandardScaler()
|
||||
scaled_features = scaler.fit_transform(features)
|
||||
|
||||
# Применение алгоритма linkage для кластеризации
|
||||
linkage_matrix = linkage(scaled_features, method='ward', metric='euclidean')
|
||||
|
||||
# Выбор оптимального числа кластеров и применение кластеризации
|
||||
num_clusters = 5 # Выберите желаемое количество кластеров
|
||||
clusters = fcluster(linkage_matrix, num_clusters, criterion='maxclust')
|
||||
|
||||
# Добавление информации о кластерах в исходные данные
|
||||
features['cluster'] = clusters
|
||||
|
||||
# Вывод результатов кластеризации
|
||||
print(features[['housing_median_age', 'total_rooms', 'median_house_value', 'cluster']])
|
||||
|
||||
clustered_data = features.groupby('cluster').describe()
|
||||
print(clustered_data)
|
||||
|
||||
# Визуализация результатов кластеризации с использованием seaborn
|
||||
plt.figure(figsize=(12, 6))
|
||||
sns.scatterplot(x='housing_median_age', y='total_rooms', size='median_house_value', sizes=(10, 200), hue='cluster', palette='viridis', data=features)
|
||||
plt.title('Clustering Results')
|
||||
plt.xlabel('Housing Median Age')
|
||||
plt.ylabel('Total Rooms')
|
||||
plt.show()
|
Before Width: | Height: | Size: 35 KiB |
Before Width: | Height: | Size: 247 KiB |
@ -1,89 +0,0 @@
|
||||
Вариант 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. Строится график рассеяния для визуального сравнения фактических и предсказанных значений на тестовом наборе.
|
||||
|
||||
Результаты:
|
||||
|
||||
![Alt text](1.png)
|
||||
|
||||
Выводы:
|
||||
|
||||
Оценка результатов:
|
||||
|
||||
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) представляет собой среднюю ошибку в предсказаниях в единицах целевой переменной.
|
||||
|
||||
Общий вывод: Результаты говорят о том, что модель демонстрирует неплохое соответствие данным, но есть возможность для улучшений.
|
@ -1,68 +0,0 @@
|
||||
# Использовать регрессию по варианту для данных из таблицы 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()
|
@ -1,36 +0,0 @@
|
||||
Вариант 2
|
||||
|
||||
Задание:
|
||||
Выбрать художественный текст (четные варианты – русскоязычный, нечетные – англоязычный) и обучить на нем рекуррентную нейронную сеть для решения задачи генерации. Подобрать архитектуру и параметры так, чтобы приблизиться
|
||||
к максимально осмысленному результату. Далее разбиться на пары четный-нечетный вариант, обменяться разработанными сетями и проверить, как архитектура товарища справляется с вашим текстом. В завершении подобрать компромиссную архитектуру, справляющуюся достаточно хорошо с обоими видами текстов.
|
||||
|
||||
Данные:
|
||||
Русский текст: Рассказ «Хлеб для собаки» - Владимир Тендряков
|
||||
Английский текст: The Tell-Tale Heart - Edgar Allan Poe
|
||||
|
||||
Запуск:
|
||||
Запустите файл lab7.py
|
||||
|
||||
Описание программы:
|
||||
1. В начале программы задается функция `load_text(file_path)`, которая загружает текст из указанного файла с учетом кодировки UTF-8.
|
||||
2. Функция `create_tokenizer(text)` создает токенизатор для обработки текста с использованием библиотеки Keras.
|
||||
3. `generate_input_sequences(text, tokenizer)` генерирует входные последовательности для обучения модели, разбивая текст на n-граммы.
|
||||
4. Создается рекуррентная нейронная сеть с использованием функции `create_model(total_words, max_sequence_length)`.
|
||||
5. Модель содержит слои Embedding, LSTM и Dense, предназначенные для обработки последовательностей и генерации текста.
|
||||
6. В функции `train_model(model, predictors, labels, epochs)` модель компилируется и обучается на входных последовательностях с заданным числом эпох.
|
||||
7. После обучения модели используется функция `generate_text(seed_text, next_words, model, tokenizer, max_sequence_length)` для генерации текста на основе заданной начальной строки.
|
||||
8. Программа предоставляет возможность генерации текста на основе обученной модели для продемонстрированного языка (русского или английского).
|
||||
9. Загружаются тексты на разных языках (русском и английском), обучаются модели, генерируется текст, что позволяет проверить, как обученная модель справляется с текстом на другом языке.
|
||||
|
||||
Результаты:
|
||||
|
||||
Результат генерации на русском языке:
|
||||
|
||||
Парень увидел собаку же куркули грызут кору ты жалеешь «если враг не сдается его уничтожают » а это «уничтожают» вот так наверное и должно выглядеть черепа с глазами слоновьи ноги пена из черного рта ты просто боишься смотреть правде в глаза и хрипом те который готов меня на пустыре возле единого на моих
|
||||
|
||||
Результат генерации на английском языке:
|
||||
Old man i kept quite still and said nothing for a whole hour i did not move a muscle and in the meantime i did not hear him lie down he was still sitting up in the bed listening just as i have done night after night hearkening to the death watches
|
||||
|
||||
Выводы:
|
||||
|
||||
Результаты генерации текстов на русском и английском языках демонстрируют, что обученные модели способны создавать относительно осмысленные последовательности слов, на английском языке текст получился лучше, возможно следует выбрать другие художественные тексты на русском языке для обучения модели.
|
@ -1,89 +0,0 @@
|
||||
# Выбрать художественный текст (четные варианты – русскоязычный, нечетные – англоязычный) и обучить на нем
|
||||
# рекуррентную нейронную сеть для решения задачи генерации. Подобрать архитектуру и параметры так, чтобы приблизиться
|
||||
# к максимально осмысленному результату. Далее разбиться на пары четный-нечетный вариант, обменяться разработанными
|
||||
# сетями и проверить, как архитектура товарища справляется с вашим текстом. В завершении подобрать компромиссную
|
||||
# архитектуру, справляющуюся достаточно хорошо с обоими видами текстов.
|
||||
|
||||
import numpy as np
|
||||
from keras.models import Sequential
|
||||
from keras.layers import Embedding, LSTM, Dense
|
||||
from keras.preprocessing.text import Tokenizer
|
||||
from keras.preprocessing.sequence import pad_sequences
|
||||
|
||||
def load_text(file_path):
|
||||
with open(file_path, encoding='utf-8') as file:
|
||||
return file.read()
|
||||
|
||||
|
||||
def create_tokenizer(text):
|
||||
tokenizer = Tokenizer()
|
||||
tokenizer.fit_on_texts([text])
|
||||
return tokenizer
|
||||
|
||||
|
||||
def generate_input_sequences(text, tokenizer):
|
||||
input_sequences = []
|
||||
for line in text.split('\n'):
|
||||
token_list = tokenizer.texts_to_sequences([line])[0]
|
||||
for i in range(1, len(token_list)):
|
||||
n_gram_sequence = token_list[:i + 1]
|
||||
input_sequences.append(n_gram_sequence)
|
||||
|
||||
max_sequence_length = max([len(x) for x in input_sequences])
|
||||
input_sequences = pad_sequences(input_sequences, maxlen=max_sequence_length, padding='pre')
|
||||
|
||||
predictors, labels = input_sequences[:, :-1], input_sequences[:, -1]
|
||||
return predictors, labels, max_sequence_length
|
||||
|
||||
|
||||
def create_model(total_words, max_sequence_length):
|
||||
model = Sequential()
|
||||
model.add(Embedding(total_words, 100, input_length=max_sequence_length - 1))
|
||||
model.add(LSTM(150))
|
||||
model.add(Dense(total_words, activation='softmax'))
|
||||
|
||||
model.compile(loss='sparse_categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
|
||||
return model
|
||||
|
||||
|
||||
def train_model(model, predictors, labels, epochs):
|
||||
model.fit(predictors, labels, epochs=epochs, verbose=1)
|
||||
|
||||
|
||||
def generate_text(seed_text, next_words, model, tokenizer, max_sequence_length):
|
||||
for _ in range(next_words):
|
||||
token_list = tokenizer.texts_to_sequences([seed_text])[0]
|
||||
token_list = pad_sequences([token_list], maxlen=max_sequence_length - 1, padding='pre')
|
||||
predicted = np.argmax(model.predict(token_list), axis=-1)
|
||||
output_word = ""
|
||||
for word, index in tokenizer.word_index.items():
|
||||
if index == predicted:
|
||||
output_word = word
|
||||
break
|
||||
seed_text += " " + output_word
|
||||
return seed_text
|
||||
|
||||
|
||||
# Загрузка текста
|
||||
#file_path = 'russian_text.txt'
|
||||
file_path = 'english_text.txt'
|
||||
text = load_text(file_path)
|
||||
|
||||
# Создание токенизатора
|
||||
tokenizer = create_tokenizer(text)
|
||||
total_words = len(tokenizer.word_index) + 1
|
||||
|
||||
# Генерация входных последовательностей
|
||||
predictors, labels, max_sequence_length = generate_input_sequences(text, tokenizer)
|
||||
|
||||
# Создание модели
|
||||
model = create_model(total_words, max_sequence_length)
|
||||
|
||||
# Тренировка модели
|
||||
train_model(model, predictors, labels, epochs=150)
|
||||
|
||||
# Генерация текста
|
||||
seed_text = "Old man"
|
||||
next_words = 50
|
||||
generated_text = generate_text(seed_text, next_words, model, tokenizer, max_sequence_length)
|
||||
print(generated_text)
|
Before Width: | Height: | Size: 131 KiB |
@ -1,224 +0,0 @@
|
||||
|
||||
## Лабораторная работа 7. Вариант 4.
|
||||
### Задание
|
||||
- Выбрать художественный текст и обучить на нем рекуррентную нейронную сеть
|
||||
для решения задачи генерации.
|
||||
- Подобрать архитектуру и параметры так,
|
||||
чтобы приблизиться к максимально осмысленному результату.
|
||||
- Подобрать компромиссную архитектуру, справляющуюся
|
||||
достаточно хорошо русским и английским текстами.
|
||||
|
||||
### Как запустить
|
||||
Для запуска программы необходимо с помощью командной строки в корневой директории файлов прокета прописать:
|
||||
```
|
||||
python main.py
|
||||
```
|
||||
Результат выполнения программы будет выведен в консоль.
|
||||
> **Warning**
|
||||
>
|
||||
> Данное решение использует конфигурацию, созданную на основе комплектующих машины, на которых она запущена. Запуск программы на машинах с отличной конфигурацией может привести к ошибкам.
|
||||
|
||||
### Используемые технологии
|
||||
- Библиотека `numpy`, используемая для обработки массивов данных и вычислений
|
||||
- Библиотека `sys`, используемая для потокового вывода данных в консоль.
|
||||
- Библиотека `nltk` - (Natural Language Toolkit) библиотека для обработки естественного языка, используемая для предобработки текста:
|
||||
- `RegexpTokenizer` - инструмент для токенизации текста на основе регулярных выражений.
|
||||
- `stopwords` - коллекция стоп-слов корпуса языка.
|
||||
- Библиотека `tensorflow` - открытая библиотека глубокого обучения, используемая для создания и обучения моделеи машинного обучения, основанной на рекурентной нейронной сети.
|
||||
- Библиотека `keras` - высокоуровневая библиотека глубокого обучения:
|
||||
- `Sequential` - класс, который представляет собой линейную стековую модель нейронной сети.
|
||||
- `Dense`, используемый для создания слоя, в котором каждый нейрон соединен со всеми нейронами в предыдущем слое.
|
||||
- `Dropout` - метод регуляризации, который применяется в нейронных сетях для борьбы с переобучением. Он заключается во временном исключении случайно выбранных нейронов во время обучения модели.
|
||||
- `LSTM` - (Long Short-Term Memory) тип рекуррентной нейронной сети, который используется для обработки последовательностей данных. Он отличается от обычных рекуррентных нейронных сетей (RNN) своей способностью эффективно улавливать долгосрочные зависимости в последовательностях.
|
||||
|
||||
### Описание работы
|
||||
#### Предобработка текстовых данных
|
||||
|
||||
Нам нужно преобразовать наш вводимый текст в числа, а затем обучить модель последовательностям этих чисел.
|
||||
|
||||
Для начала загрузим текстовые данные. У нас это будет небольшое современное художественное произведение примерно на 180 строк тектса:
|
||||
```python
|
||||
file = open("P:\\ULSTU\\ИИС\\Лабораторные\\Lab7\\texts\\text-ru.txt", encoding='utf-8').read()
|
||||
```
|
||||
Теперь переведём текст в нижний регистр, и создадим токены из слов с помощью `NLTK`.
|
||||
```python
|
||||
input = input.lower()
|
||||
tokenizer = RegexpTokenizer(r'\w+')
|
||||
tokens = tokenizer.tokenize(input)
|
||||
```
|
||||
Отфильтруем список токенов и оставим только те токены, которых нет в списке стоп-слов или общих слов русского корпуса, дающих мало информации о рассматриваемом предложении, с помощью `NLTK`:
|
||||
```python
|
||||
filtered = filter(lambda token: token not in stopwords.words('russian'), tokens)
|
||||
```
|
||||
Теперь преобразуем символы нашего текста в числа:
|
||||
- Отсортируем список из набора всех символов, которые появляются во входном тексте.
|
||||
- Получим числа, представляющие символы с помощью `enumerate`.
|
||||
- Создадим словарь, в котором хранятся символы и числа, которые их представляют.
|
||||
```python
|
||||
chars = sorted(list(set(processed_inputs)))
|
||||
char_to_num = dict((c, i) for i, c in enumerate(chars))
|
||||
input_len = len(processed_inputs)
|
||||
vocab_len = len(chars)
|
||||
```
|
||||
Также сохраним общее кол-во символов и размер словаря для создания набора данных.
|
||||
|
||||
#### Создание набора данных
|
||||
|
||||
Для начала необходимо задать длину последовательности (одно полное отображение входных символов в целые числа). Укажем её размер равный 100.
|
||||
|
||||
Теперь необходимо пройти весь список входов и преобразовать символы в числа, для создания групп последовательностей входных и выходных данных для обучения:
|
||||
```python
|
||||
seq_length = 100
|
||||
x_data = []
|
||||
y_data = []
|
||||
for i in range(0, input_len - seq_length, 1):
|
||||
in_seq = processed_inputs[i:i + seq_length]
|
||||
out_seq = processed_inputs[i + seq_length]
|
||||
x_data.append([char_to_num[char] for char in in_seq])
|
||||
y_data.append(char_to_num[out_seq])
|
||||
n_patterns = len(x_data)
|
||||
print("Кол-во паттернов:", n_patterns)
|
||||
```
|
||||
Также выведем общее кол-во обучающих последовательностей (паттернов).
|
||||
|
||||
Преобразуем входные последовательности в обработанный массив `numpy`, с преобразованием значений массива `numpy` в числа с плавающей запятой, чтобы функция активации сигмоида, которую использует рекурентная нейронная сеть, могла интерпретировать их и выводить вероятности от 0 до 1.
|
||||
```python
|
||||
X = np.reshape(x_data, (n_patterns, seq_length, 1))
|
||||
X = X / float(vocab_len)
|
||||
y = np_utils.to_categorical(y_data)
|
||||
```
|
||||
|
||||
#### Разработка архитектуры модели
|
||||
|
||||
Создадим модель `LSTM` типа `Sequential` и добавим слои:
|
||||
```python
|
||||
model.add(LSTM(256, input_shape=(X.shape[1], X.shape[2]), return_sequences=True))
|
||||
model.add(Dropout(0.2))
|
||||
model.add(LSTM(256, return_sequences=True))
|
||||
model.add(Dropout(0.2))
|
||||
model.add(LSTM(256))
|
||||
model.add(Dropout(0.2))
|
||||
model.add(Dense(y.shape[1], activation='softmax'))
|
||||
```
|
||||
- 1й слой - слой в 256 нейронов по размерности входных данных с обратными зависимостями.
|
||||
- 2й слой - слой в 256 нейронов с обратными зависимостями
|
||||
- 3й слой - слой в 256 нейронов
|
||||
|
||||
Между каждыми слоями используется функция `Dropout` для случайного исключения нейронов с вероятностью 0.2 в целях борьбы с переобучением.
|
||||
|
||||
После этого компилируем модель и обучаем. Лучшие модели с наименьшими ошибками определения связей символов будут сохраняться в файл. Добавим функцию для вывода сгенерированного текста:
|
||||
|
||||
```python
|
||||
start = np.random.randint(0, len(x_data) - 1)
|
||||
pattern = x_data[start]
|
||||
print("Случайная выборка:")
|
||||
print("\"", ''.join([num_to_char[value] for value in pattern]), "\"")
|
||||
|
||||
for i in range(1000):
|
||||
x = np.reshape(pattern, (1, len(pattern), 1))
|
||||
x = x / float(vocab_len)
|
||||
prediction = model.predict(x, verbose=0)
|
||||
index = np.argmax(prediction)
|
||||
result = num_to_char[index]
|
||||
sys.stdout.write(result)
|
||||
pattern.append(index)
|
||||
pattern = pattern[1:len(pattern)]
|
||||
```
|
||||
В качестве стартового набора для генерации используем случайную выборку слов текста.
|
||||
|
||||
#### Оптимизация модели
|
||||
|
||||
Рекурентные нейронные сети основаны на матричных вычислениях, которых в данной модели огромное количество. Процессор обрабатывает такие данные достаточно медленно (к примеру на данной машине время выполнение одной эпохи обучения ресурсами процессора было около 50 минут). Однако, рекурентные сети способны учиться и на графических картах.
|
||||
|
||||
На данной машине установлена GPU NVidia GTX 980Ti с графической памятью DDR6 на 4Гб. Чтобы использовать её для вычислений, необходимо установить ПО от NVidia - `CUDA` и драйвер `cudnn`. После этого необходимо установить `tensorflow` с поддержкой GPU, задать ему конфигурации машины и настроить распределённую архитектуру вычислений:
|
||||
```python
|
||||
strategy = tf.distribute.MultiWorkerMirroredStrategy()
|
||||
with strategy.scope():
|
||||
parallel_model = model
|
||||
parallel_model.fit(X, y, epochs=200, batch_size=256, callbacks=desired_callbacks)
|
||||
```
|
||||
Данная стратегия распределяет вычисления на ЦП и ГП в зависимости от их загруженности. С ней время одной эпохи обучения скратилось до 50 секунд.
|
||||
|
||||
Нагрузка на ЦП и ГП во время обучения:
|
||||
![](1.png "")
|
||||
|
||||
#### Генерация текста
|
||||
Информация о входных данных:
|
||||
```
|
||||
Общее кол-во символов: 31258
|
||||
Размер словаря: 34
|
||||
Кол-во паттернов: 31158
|
||||
```
|
||||
Сгенерируем русский текст на 5 эпохах обучения:
|
||||
```
|
||||
Epoch 1/5
|
||||
122/122 [==============================] - ETA: 0s - loss: 3.1638
|
||||
Epoch 1: loss improved from inf to 3.16378, saving model to model_weights_saved.hdf5
|
||||
...
|
||||
Epoch 5/5
|
||||
122/122 [==============================] - ETA: 0s - loss: 3.0314
|
||||
Epoch 5: loss improved from 3.08348 to 3.03140, saving model to model_weights_saved.hdf5
|
||||
Случайная выборка:
|
||||
" ти могли привлекать чужой взгляд сводить ума молить помиловании тёмные полосы тени высоких деревьев "
|
||||
ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо ооо
|
||||
```
|
||||
На 5ти эпохах обучения получается абсолютно бессвязный текст, слова логически не сгенерированы. Сгенерируем русский текст на 10 эпохах обучения:
|
||||
```
|
||||
Epoch 1/10
|
||||
122/122 [==============================] - ETA: 0s - loss: 3.1625
|
||||
Epoch 1: loss improved from inf to 3.16249, saving model to model_weights_saved.hdf5
|
||||
...
|
||||
Epoch 10/10
|
||||
122/122 [==============================] - ETA: 0s - loss: 2.7291
|
||||
Epoch 10: loss improved from 2.78984 to 2.72912, saving model to model_weights_saved.hdf5
|
||||
Случайная выборка:
|
||||
" чески осматривая огромный двор откуда выскочить таким страхом оглядываются охранники стоящие высоких "
|
||||
пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо пооооо поооо
|
||||
```
|
||||
На 10 эпохах обучения результат генерации текста получился таким же неудовлетворительным, что и на 5. Сгенерируем русский текст на 50 эпохах обучения:
|
||||
```
|
||||
Epoch 1/50
|
||||
122/122 [==============================] - ETA: 0s - loss: 3.1663
|
||||
Epoch 1: loss improved from inf to 3.16626, saving model to model_weights_saved.hdf5
|
||||
...
|
||||
Epoch 50/50
|
||||
122/122 [==============================] - ETA: 0s - loss: 0.7051
|
||||
Epoch 50: loss improved from 0.72650 to 0.70508, saving model to model_weights_saved.hdf5
|
||||
Случайная выборка:
|
||||
" небольшом экране здешние пейзажи конца жизни будут вынуждать молодого парня отчетливо ощущать очаров "
|
||||
ание восторг всё сильнее становится рринесеть семе выподить делает принуатию весас корорый держа свой взгляд видляд жверя кишь счрали одного всемательно поститался фртографию выстрогои джухёк одлом бысоких деревьев обнаружить гедрм доого нову поптитал ррдинается сроровняе кемечелия срику тэхён поношался кажртванног выродить деухёк льфа видот отвечает тэхён выглядит сраки делал сочни пассавляет камену невероятно красивый вслух подобного поведения отнышие своим ведлм доооге начинает прднимая нугань мальчика сочно поднуся альфе каждый анетасалтся обреть ссрашивает голову слышит приближающиеся шаги полностью ззменной ботсване моральную физическую боль машина останавливается постояения своем волос пугеляни соснойно проазаться мевольно прогодит леметт рену тозну тэхёна оокучается пририсенную скоро боле гзга смотрит вооруженный взгляд жиего произносит мюди обращают внимание альфа рутаньство сронцно просиает сочно подбородок вынуждая чонгука просно подобного поведения отнышие водитель сразу
|
||||
```
|
||||
На 50 эпохах обучения результат генерации текста заметно лучше, чем на 10: присутствуют слова и даже связанные по смыслу словосочетания. В словах замечается большое кол-во ошибок и связанных полных предложений пока всё ещё нет. Сгенерируем русский текст на 100 эпохах обучения:
|
||||
```
|
||||
Epoch 1/100
|
||||
122/122 [==============================] - ETA: 0s - loss: 3.1675
|
||||
Epoch 1: loss improved from inf to 3.16754, saving model to model_weights_saved.hdf5
|
||||
...
|
||||
Epoch 100/100
|
||||
122/122 [==============================] - ETA: 0s - loss: 0.2224
|
||||
Epoch 100: loss did not improve from 0.22002
|
||||
Случайная выборка:
|
||||
" ь правильнее ещё никто делал чон рено нему настолько близко находится живёт одной комнате смеет боят "
|
||||
ься зверя которого спас воспитал тигр лишь шутку укусить причиняя сильной боли ези кажется настал день придётся попрощаться своей короткой жизнью точно думал умрёт клыков тигра подобные ужасы голову лезли диего замечая чуя кусок мяса ускоряет свой шаг издает негромкий рык сильнее напугать мальчика который прежнему надеется разумные мысли чонгука стоящего позади останавливаться собирается суждено умереть сегодня пусть ези смело доает язык внесний подирают грооко пидел дома простудой жуткой болью костях мог летать сеул экзамены занимался круглосуточно очередным беспокойством произносит понимая это альфе понравится джухёк кидает злобный взгляд угрожая суженными зрачками очерчивая скулы омега поджимает губы всё равно отстраняется брата крепче обнимает слегка хмурит брови зная очередном отказе тэхён пошёл рано африканскую школу поэтому корейскую закончил семнадцать лет самым младшим классе находясь первом курсе журналистики омега остаётся самым мелким парнишкой среди своих одногруппников
|
||||
```
|
||||
На 100 эпохах обучения мы получили пракически полносвязный текст со связями не только внутри предложений, но и между ними. При прочтении данного текста можно понять некую историю. Ошибок в словах практически нет. При этом, степень похожести оригинального и сгенерированного текста не более 60%, а значит, модель не переобучилась и сама генерирует более-менее связный текст. На этом эксперименты генерации русского текста завершены.
|
||||
|
||||
Сгенерируем английский текст на 100 эпохах обучения:
|
||||
```
|
||||
Epoch 1/100
|
||||
104/104 [==============================] - ETA: 0s - loss: 2.9685
|
||||
Epoch 1: loss improved from inf to 2.96853, saving model to model_weights_saved.hdf5
|
||||
...
|
||||
Epoch 100/100
|
||||
104/104 [==============================] - ETA: 0s - loss: 0.1609
|
||||
Epoch 100: loss improved from 0.16124 to 0.16091, saving model to model_weights_saved.hdf5
|
||||
Случайная выборка:
|
||||
"brother never return seoul juhyuk chuckles turns around noticing taxi driver two bright suitcases "
|
||||
belonging taehyung elder kim gives younger one suspicious look approaches driver black jeep takes suitcases quietly thanking taehyung nods taxi driver seat smiles thanking omega turns back home causing tears gather corners honey colored eyes relaxes whole body takes warm air lungs looking around house front definitely changed four years taehyung become beautiful although like changes clearly visible outside apparently everything become different inside senior brother definitely done good job improving everything concerns hearth also neighboring houses taehyung considerable pocket money definitely came handy nothing secretly transferred juhyuk sense come back alpha asks seriously comes closer dreaming biting lip dreaming forbid grunting cheerfully takes suitcase brother leaves house man narrows eyes looks carefully taehyung retreating back thinking soon following omega first enter house holding breath pursing lips hurts slightly juhyuk hurry glances younger reason worries reaction caref
|
||||
```
|
||||
На 100 эпохах обучения английский текст сгенерировался также удовлетворительно, как и русский.
|
||||
|
||||
### Вывод
|
||||
Модель рекурентной нейронной сети, созданная в рамках данной лабороторной, на 100 эпохах обучения показала хорошие результаты в генерации русского и английского текста. Потери связей символов в обоих случаях были меньше 1. На 50-60 % текст получился оригинальный, а значит модель не переобучилась.
|
||||
|
||||
Таким образом, спроектированная архитектура рекурентной нейронной сети подходит для генерации текстов.
|
@ -1,97 +0,0 @@
|
||||
import sys
|
||||
import numpy as np
|
||||
from nltk.tokenize import RegexpTokenizer
|
||||
from nltk.corpus import stopwords
|
||||
import tensorflow as tf
|
||||
from keras.models import Sequential
|
||||
from keras.layers import Dense, Dropout, LSTM
|
||||
from keras.utils import np_utils
|
||||
from keras.callbacks import ModelCheckpoint
|
||||
|
||||
file = open("P:\\ULSTU\\ИИС\\Лабораторные\\Lab7\\texts\\text-en.txt", encoding='utf-8').read()
|
||||
|
||||
|
||||
def tokenize_words(input):
|
||||
# переводим весть текст в строчные буквы
|
||||
input = input.lower()
|
||||
|
||||
# инициализируем токенизатор
|
||||
tokenizer = RegexpTokenizer(r'\w+')
|
||||
tokens = tokenizer.tokenize(input)
|
||||
|
||||
# выбираем и выбрасываем все стоп слова, находящиеся в списке стоп слов русского языка
|
||||
filtered = filter(lambda token: token not in stopwords.words('english'), tokens)
|
||||
return " ".join(filtered)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
# предобрабатываем текст, создаём токены
|
||||
processed_inputs = tokenize_words(file)
|
||||
|
||||
chars = sorted(list(set(processed_inputs)))
|
||||
char_to_num = dict((c, i) for i, c in enumerate(chars))
|
||||
|
||||
input_len = len(processed_inputs)
|
||||
vocab_len = len(chars)
|
||||
print("Общее кол-во символов:", input_len)
|
||||
print("Размер словаря:", vocab_len)
|
||||
|
||||
seq_length = 100
|
||||
x_data = []
|
||||
y_data = []
|
||||
for i in range(0, input_len - seq_length, 1):
|
||||
in_seq = processed_inputs[i:i + seq_length]
|
||||
out_seq = processed_inputs[i + seq_length]
|
||||
x_data.append([char_to_num[char] for char in in_seq])
|
||||
y_data.append(char_to_num[out_seq])
|
||||
|
||||
n_patterns = len(x_data)
|
||||
print("Кол-во паттернов:", n_patterns)
|
||||
|
||||
X = np.reshape(x_data, (n_patterns, seq_length, 1))
|
||||
X = X / float(vocab_len)
|
||||
y = np_utils.to_categorical(y_data)
|
||||
|
||||
model = Sequential()
|
||||
model.add(LSTM(256, input_shape=(X.shape[1], X.shape[2]), return_sequences=True))
|
||||
model.add(Dropout(0.2))
|
||||
model.add(LSTM(256, return_sequences=True))
|
||||
model.add(Dropout(0.2))
|
||||
model.add(LSTM(256))
|
||||
model.add(Dropout(0.2))
|
||||
model.add(Dense(y.shape[1], activation='softmax'))
|
||||
|
||||
model.compile(loss='categorical_crossentropy', optimizer='adam')
|
||||
|
||||
filepath = "model_weights_saved.hdf5"
|
||||
checkpoint = ModelCheckpoint(filepath, monitor='loss', verbose=1, save_best_only=True, mode='min')
|
||||
desired_callbacks = [checkpoint]
|
||||
|
||||
# Создание распределенной стратегии
|
||||
strategy = tf.distribute.MultiWorkerMirroredStrategy()
|
||||
# Распределение модели на устройства
|
||||
with strategy.scope():
|
||||
parallel_model = model
|
||||
# Обучение модели на GPU и CPU
|
||||
parallel_model.fit(X, y, epochs=100, batch_size=256, callbacks=desired_callbacks)
|
||||
|
||||
model.load_weights(filepath)
|
||||
model.compile(loss='categorical_crossentropy', optimizer='adam')
|
||||
|
||||
num_to_char = dict((i, c) for i, c in enumerate(chars))
|
||||
|
||||
start = np.random.randint(0, len(x_data) - 1)
|
||||
pattern = x_data[start]
|
||||
print("Случайная выборка:")
|
||||
print("\"", ''.join([num_to_char[value] for value in pattern]), "\"")
|
||||
|
||||
for i in range(1000):
|
||||
x = np.reshape(pattern, (1, len(pattern), 1))
|
||||
x = x / float(vocab_len)
|
||||
prediction = model.predict(x, verbose=0)
|
||||
index = np.argmax(prediction)
|
||||
result = num_to_char[index]
|
||||
sys.stdout.write(result)
|
||||
pattern.append(index)
|
||||
pattern = pattern[1:len(pattern)]
|
||||
|
@ -1,178 +0,0 @@
|
||||
Today there is no peace in the yard again, because the predatory beast is no longer sleeping.
|
||||
Everyone in toxic territory bites their tongue, as if waiting for them all to be torn to shreds: cruelly and bloodthirsty. They turn around: frantically and fearfully. The blood runs cold in their veins, their hearts beat dully in their chests, and devils dance before their eyes.
|
||||
No one allows them to move from their place and take shelter even behind tall trees nearby. They may be found there too. They hear very quiet steps, and all this is just imagination, built on fear and fear, which pulsate with acute pain in their temples. They whisper words to the gods they believe in and worship, and since these people are still alive on this earth, they probably hear them. But it seems to them that if they move too sharply one more time, they will be found and nothing resembling a person will be left behind. A thought like this excites and drives you crazy more and more with every worthless minute, saturated with cowardice.
|
||||
The only owner of the territory where the frightened and timid are located, occasionally outlines their silhouettes with a cold gaze and admires how much fear lives in them just because of one living creature. They don't know anything about courage. He sometimes gets sick of such behavior, but he is not going to blame these people for anything, since he is the only one here who knows not only human language. He grew up in such conditions, was raised differently: unusual and wild for the rest of the inhabitants of the planet. Almost from birth, he studied those things because of which they might consider him crazy, a madman in this toxic territory. And poison flows through the earth only because of lifestyle, views, principles, traditions.
|
||||
Alpha looks at the armed guards of his house - they fought, saw many deaths, but still have fear in their chests - now he keeps his expressive eyes on the orange setting sun, which illuminates the whole of Botswana with its dim light, and later returns to his hands with two large sharp knives. He sharpens them loudly against each other, notices the bright shine and reflection of his face. Sees the one whom many people on this earth fear. He built a terrible reputation for himself.
|
||||
The man again turns away from his occupation, puts the bladed weapon down on the rocky ground and turns his head. He hears approaching steps and completely switches to this sound. A dark-skinned alpha of about twelve years old is shaking all over, and beads of sweat are rolling down his temples. The tray he holds in his childish hands makes noise along with his heart. He is afraid, but tries to hide it in front of the owner of the poisonous territory. And he sees everything, does not get angry, only feels how interest awakens in him. This boy, moving in his direction, is now terrified, afraid of a living creature, but continues to walk towards him, periodically examining the huge yard from where he can jump out. The guards standing at the tall iron lattice gates look back with the same fear.
|
||||
They are all children. They're all the same.
|
||||
The boy approaches and immediately lowers his intimidated gaze, chewing his lips and having no idea where he should start. He is new here: not even a week has passed since his arrival in this huge house.
|
||||
“Sir...” his childish voice can be heard very quietly, and the older one just arches his eyebrow. “Chon-Reno,” he recalls how his dad told him that the owner of the house prefers to be called by his last name. “Your...” he holds the tray a little forward and realizes that he has again forgotten the name of the alcohol that fills the small crystal glass. “Your...” he repeats and swallows saliva. - What you asked.
|
||||
“Rum,” Chon-Reno helps him. “This is rum, Ezi,” he takes a glass of drink and nods. The boy looks up at him in surprise, not expecting the man to remember his name. - Why are you so afraid? — narrows his bright gray eyes, bowing his head slightly.
|
||||
Yezi bats his thick black eyelashes.
|
||||
Does the senior alpha really not know why everyone in this territory is scared right now? Even God himself knows about this.
|
||||
The Lion God should also guess...
|
||||
“You released Diego,” he says as if trying to convey to Reno the full depth of his madness.
|
||||
“He’s not a monster,” the steely voice frightens.
|
||||
- He's a predator, sir...
|
||||
The corners of the elder’s dry lips twitch a little, and his indifferent gaze is averted to the side.
|
||||
His predator.
|
||||
Diego is nowhere to be seen. His boy is having fun, content with walking on the ground, the clean evening air and the big orange sun that gives its warm light. The beast catches his rays and growls. He is also a living creature, and just like people, he wants to be free and let go, but unlike pitiful people, he is not a coward and is not afraid of what God has created. Stronger, wiser and more dangerous. This powerful predator is finally heard: the sounds it makes attract Reno’s precious attention, and the dark-skinned boy is forced to flinch and turn around, roaming around the territory with huge, frightened eyes. Fear dances in his blood, and his heart beats like a pitiful bird driven into a corner. He shudders from conflicting sensations, which the man next to him notices.
|
||||
He-Renault looks blankly at Bello Jesi, the twelve-year-old alpha from a poor family who works in this large mansion. The man has known him for a couple of days, and he still has not gotten used to the usual way of life of the owner of this center of horror and madness.
|
||||
“Yessi,” he coldly calls and receives due attention to himself. “Go into the house, ask to put meat for Diego,” the younger one quickly nods and is about to leave. “And you will bring it to me yourself,” and these words already seemed much more terrible.
|
||||
“What?...” he asks again, not believing.
|
||||
- You heard me.
|
||||
But it seems that I misheard.
|
||||
A terrible feeling of cowardice and resentment is swarming in his chest, but Ezi can’t object or express his reluctance to go out into the yard a second time, and even with a raw piece of meat for a predator. He can only vaguely nod to the elder again and hastily go to the stairs leading to the doors of the mansion.
|
||||
And the owner of the house himself chuckles at the boy’s timid reaction. Without taking a sip, he puts the glass of rum on the ground and rises from the small chair. Kneading his neck with his palm, on which the face of a lion is drawn in detail, the alpha is precisely preparing for a brutal, bloody battle. Again. His gray eyes are bright and calm, but interest in what is to come will sparkle in his pupils after a couple of minutes. Running the tip of his tongue along his lower lip, Chon-Reno's gaze runs around the vast courtyard, where his beloved figure is not yet visible - it is heard so clearly and loudly that it is impossible to hide his admiration and sincere love. But these sounds do nothing to calm the guards at the gate. They are not used to them. They will never get used to it because they didn’t raise him like Jungkook did.
|
||||
When Yezi finally comes out of the house, holding a small tray with a piece of meat in his hands, Reno grins again and puts his hands behind his back. He waits for him, looks at him and hears from afar how he desperately breaks the little alpha’s chest. He is getting closer to him, often looks around and whispers something under his breath. Is it really prayers? The man quirks an eyebrow and turns his head, hearing another loud roar that he could only be proud of. His boy has grown up a lot and become strong, which is why he scares everyone so much. Maybe Chon-Reno's sounds make him smile contentedly, but for Yezi they make him want to hide behind one of the columns. Only Reno himself is waiting for him, and he cannot afford to fulfill what he wants, otherwise the truth will receive its well-deserved punishment. And that’s the last thing I want right now.
|
||||
Every resident of Botswana has already heard about harsh methods of retribution for disobedience.
|
||||
“Sir, here’s the meat,” Yezi whispers, standing opposite the man and feeling tears welling up in his expressive eyes. -Can I go into the house now?..
|
||||
A child's heart just begs for dad.
|
||||
- No, - frost and cold.
|
||||
From such an answer, the boy tightens his grip and bites his lip until it hurts, and then obediently turns his gaze to where Jungkook is looking.
|
||||
Now Diego's eyes appear in the semi-darkness.
|
||||
Fear beats like a second heart in your chest, and your throat suddenly dries up. Ezi wants to run away from here when he sees that a predatory animal is coming out from around the corner of the mansion, showing that he is also the owner here. He looks at the dark-skinned boy and the tall man standing next to him, showing a proud smile on his dry lips. His steps are slow, confident, because he knows his worth well and how majestic he now looks under the orange light of the sunset sky. He walks boldly and gracefully, piercing with a sharp gaze, sensing food somewhere near him. The look is wild, free, omnipotent. The stripes, smoothly located on his velvet fur, could always attract someone else's gaze, drive him crazy and beg for mercy. The dark stripes are shadows from tall trees, and between them are the yellow reflections of the African sun. The whole appearance of the beast is peaceful, but for some reason it sends a terrible shiver through the skin.
|
||||
So handsome and young. Reno is unable to take his interested gaze away from him, just like poor Ezi, who is frozen. This is the first time he sees the beast so well and clearly; before that, he had only heard about the powerful Diego, whose appearance forces everyone to believe in God. Even ordinary steps hypnotize everyone in this area.
|
||||
Jungkook looks down at Bello Yezi and chuckles.
|
||||
“Bring him his snack closer,” the boy swallows his saliva nervously and looks up at Chon-Reno, dumbfounded. “The only way to escape from a predator is to feed him something else,” Ezi reads instructively to him something that Ezi does not believe in, and the elder squats down in front of him, looking into his glassy, rounded eyes. “You don’t want to be eaten by him, do you?” - he is silent. “Then give him what he wants and he won’t hurt you.”
|
||||
“Sir, please,” he begs in a trembling voice. “He’s a tiger, I never approached them...” he tells him the obvious, hoping for pity. - Is it dangerous…
|
||||
— Take this meat to Diego, Ezi, firmly and undeniably.
|
||||
In an instant, the boy becomes more afraid of Chon-Reno Jungkook than of the huge young tiger slowly moving towards them.
|
||||
“I can’t…” he whispers quietly, looking only into the gray eyes opposite.
|
||||
Who could? Apparently, only the owner of this beast himself.
|
||||
- You're not up toI’m lying to say that,” Jungkook tilts his head slightly to his shoulder. “You haven’t even come close to him, which means you don’t know for sure whether you can or not,” Yezi purses his lips. “Forward,” he orders, nodding towards Diego.
|
||||
The Bengal tiger is getting closer to them, continues to move and keeps its yellow eyes only on a person it does not know. He sees it for the first time, which is why he analyzes it so predatorily, forcing Ezi to hold her breath and finally take a tense step forward. To Diego.
|
||||
He is also closely watched by Reno, who calmly gets back to his feet and straightens his back. The boy is holding up really well. Jungkook was already hoping that he would burst into tears and just storm out of here. He wouldn’t follow him: it’s not for him to judge a teenager for a completely significant and logical fear. Not everyone here dares to approach Diego and feed him. To be more correct, no one has ever done this before. Only Chon-Reno is so close to him: he lives in the same room with him and does not even dare to be afraid of this beast, which he himself saved, and raised himself. A tiger can bite him only as a joke, without causing severe pain. But it seems to Yezi that the day has come when he will have to say goodbye to his short life. I certainly didn’t think that I would die from the fangs of a tiger. Such horrors never entered his head.
|
||||
Diego, noticing and smelling a piece of meat, quickens his pace and emits a low growl, which can only scare the boy more, who still hopes for the reasonable thoughts of Jungkook standing behind, but is not going to stop.
|
||||
If you are destined to die today, so be it.
|
||||
Yezi already boldly looks into the eyes of the tiger approaching him and stops a couple of meters from Chon-Reno, squatting down and keeping his gaze on the incredibly beautiful beast. The senior alpha is even a little surprised at this bold step, watching what is happening and grinning slightly. The younger one bites his lower lip and looks down at the scarlet piece of meat on the silver tray, which he places on the rocky ground, taking an uncertain small step back. He closes his eyes painfully and clenches his fingers tightly into a fist, already beginning to feel the non-existent pain brought to him in the near future by a hungry tiger. During these seconds, he manages to say goodbye to his parents, whispers asking them for forgiveness for all his mistakes, listening to the approaching steps. It seems his heart will stop before the beast approaches.
|
||||
But…
|
||||
The sun-kissed tiger - Diego - roars throughout the yard, majestically scattering the birds in the trees and on the roof of the mansion. Ezi opens his eyelids in fear and sees in front of him the evil face and huge mouth of an animal, which in the next second sinks its fangs into a piece of raw meat. He doesn't stop growling at the boy, as if he's trying to tell him something. But the teenager only looks dumbfounded into the yellow eyes and forgets to breathe, falling on his heel to the ground and opening his mouth. Diego just takes the meat and runs to the side, throws his snack away from the boy, lies down next to her and calmly begins to lick and eat his favorite delicacy, depriving Ezi of the thought of possible death. With pleasure and a growl, he tears off small pieces, immediately swallowing them and sometimes glancing at his owner.
|
||||
Jungkook smiles weakly, looking at the tiger and hiding both hands in the pockets of his black cargo pants. He slowly turns his gaze from him to the boy lying on the ground and looking with the same shock at the quiet Diego, who no longer pays any attention to him. The beast is busy with his real food, and not with the person who brought it to him. Probably, only Jungkook was convinced until the last seconds that Diego would not touch Yesi.
|
||||
He never doubts his tiger and his lions.
|
||||
He knows their every move in advance.
|
||||
The dark-skinned boy and many foreigners expect that every African speaks to animals as equals, understands their thoughts and language. But there are few like them in all of Botswana. Units. And among them, at the top stands Chon-Reno Jungkook - the Lion God. Only Bello Ezi now seems that the man, at twenty-eight years old, has also become the patron saint of tigers.
|
||||
The young alpha has difficulty getting up from the ground, looking away from Diego and turning to his owner, who was looking at him so sharply and piercingly. Now Jungkook is approaching them: calmly and slowly. But Yezi is no longer afraid, as if the tiger gave him incredible courage because of his proximity to him. Alpha believes in such tales heard from other people's lips. He also believes in that terrifying feeling that is stored in the chest of a man who has the face of a lion depicted in black ink on his neck. The true lion god. This God stands a meter away from the no longer frightened boy, but delighted with what he saw two minutes ago. Of course, he was amazed at how close the young Bengal tiger was to him. I would run to tell this story to my friends and classmates, but they would never believe it, so the important memory will settle deep in my heart.
|
||||
“Sir...” Yezi begins in shock, swallowing his saliva. “Diego didn’t touch me,” he looks at Jungkook, who chuckled under his breath. - Why? He could...
|
||||
A couple of seconds would be enough for the beast to tear him bloodthirsty to pieces.
|
||||
-You fed him what something else remained untouched,” a deep, heavy voice is heard. “The fangs and claws did not penetrate you only for this reason.” “He’s a predator, not a killer,” Yezi relaxes a little and nods briefly, remembering his words. “He needs food, not someone’s death,” Reno, having finished, looks at his striped boy.
|
||||
“He’s very handsome,” Ezi admits quietly, also looking in the direction of the beast.
|
||||
Jungkook looks down at him and grins.
|
||||
“Incredibly beautiful,” he confirms out loud.
|
||||
Yesi smiles and ultimately does not conceal the question:
|
||||
-Can I go now?..
|
||||
Reno nods without a word.
|
||||
Yezi smiles broadly and takes the tray from the ground, after which he runs into the huge mansion, wanting to tell his father, who is in charge of the kitchen, about what happened.
|
||||
The bright rays of the setting African sun play fabulously on the striped coat. Jungkook is currently fascinated by the sight in front of him. Diego has grown a lot. He is only a year and a half old, but he is the size of an adult tiger. It’s hard to believe that not so long ago the animal was a small animal, and it constantly hovered next to Chon-Reno, did not really leave him: it climbed, playfully growled and bit its owner’s legs, wanting to attract proper attention to itself. Got used to Jungkook too quickly. After Jungkook took him to himself, wounded by adult animals, two weeks were enough for the tiger cub to trust completely and secretly climb onto the alpha’s chest at night. And when he couldn’t sleep, he scratched and bit his chin, forcing Jungkook to wake up. And he woke up, played, fed and returned back to bed, followed by little Diego with his majestic gait.
|
||||
To this day the tiger does the same.
|
||||
Jungkook, with a smile on his lips, slowly approaches the animal, which with wild appetite throws the remaining small piece of meat into its mouth. Diego himself jumps up and runs to his owner, who is squatting. The tiger immediately climbs on him, as if with a real human hug, and playfully begins to roar, causing Reno to smile wider, clapping and stroking the animal’s stomach with his large palm. He does not calm down, he already runs his tongue along the alpha’s neck - showing his true love for him. Jungkook lowers himself to the ground and runs both hands through the tiger’s soft fur, paying due attention to the place behind the ears, just as Diego loves. With such affection he becomes a kitten. He spins around, licks where he wants, and nuzzles Chon-Reno’s chin, who laughs at this behavior. No one will ever dare to scold him for this.
|
||||
“You’re getting heavier and heavier every day, Diego,” Jungkook chuckles and continues to stroke him. “You’re scaring everyone around with your appearance, big boy,” the tiger pulls back and walks around the man, already pressing against his back and running his tongue along the nape of his brown hair. “You’ll never scare me alone, don’t even count on my fear,” Reno turns his head to Diego. He growls at him quietly, as if responding to the words spoken. “You and I are two predators, and only God knows which of us is more dangerous.”
|
||||
And Chon-Reno already knows who is more dangerous on this earth.
|
||||
And so he lived: playing pranks in his dreams out of boredom, enduring torment and disappointment. Once again he promised himself to return home soon. Only there will he find salvation, peace in his heart, luck - a piece of happiness.
|
||||
This place will make him forget all the sorrows and all the pain, will make him feel as if he drank a bottle of wine.
|
||||
Another click and another divine frame saved on the flash drive of an expensive new camera. Honey eyes instantly catch on to the photograph taken, which is displayed on the small screen. The local landscapes will force the young guy to clearly feel charm, delight and admiration until the end of his life. By looking at these beauties, a person is able to get rid of any infection and pain. Here the blind will become sighted, the deaf will learn the world of sounds. The clear blue sky, the warm November sun, tall and short trees, wild animals running around the territory, everything—everything forced me to smile and relax.
|
||||
The young alpha, driving a black jeep, which was easy to drive on rough roads, turns his head to the omega sitting in the passenger seat, who is examining the photograph taken with a slight smile on his lips. Among the ashen silky hair, the pure rays of the immense sun are tangled. Sliding lower, they decide to touch open areas of light skin, as if they are deliberately highlighting noticeable marks on the body.
|
||||
From the first seconds, the driver was attracted by one striking feature of this guy. This quickly caught my eye. All the way, the man cannot find the strength to get curiosity out of his head: he either watches the road, or turns his gaze to the passenger, secretly looking at more than just a pretty face.
|
||||
I had never been able to see something like this before.
|
||||
This involuntarily frightens, frightens, forces you to think and construct your own theories in your thoughts, but an African hardly dares to ask. Perhaps the omega does not want to talk about it, hides something and feels pain when strangers pay attention.
|
||||
Alpha chews his lower lip and looks at the road, lightly pressing the pedal. Omega bats his eyelashes and slowly turns his head, looking at the driver. He thought that it seemed to him that the guy was examining him in detail for a fairly clear reason, but now he was finally convinced of this. He immediately panics, ashamed of his unscrupulous behavior. Meanwhile, the omega is simply embarrassed, covers himself with a light blush and pulls the deep neckline of his white T-shirt up, slightly covering the sharp collarbones that he had just carefully examined. This action makes both of them even more awkward.
|
||||
Kim Taehyung can't really hide anything. All he has to do is come to terms with this - he has been doing this for seven years.
|
||||
“Sorry,” the driver says quietly and purses his lips. - I shouldn't have.
|
||||
“You are not the first and not the last,” Taehyung purses his lips in a slight smile and looks kindly at the alpha. “I should get used to this kind of attention by now, don’t worry,” he chuckles and looks at the camera screen, adjusting the colors.
|
||||
“It’s not ugly,” he decides to give a compliment and is afraid of the guy’s reaction, hearing a quiet laugh. “True,” he nods several times, keeping his eyes on the road. - Rather, it is very unusual, mysterious...
|
||||
“There is no mystery in this,” Taehyung answers and smiles softly.
|
||||
Everything is elementary.
|
||||
But everyone keeps asking the question: “What is this?” No matter who you meet, they will definitely ask you, and he will calmly answer. He wasn't tired of it. Each time it amazes me more and more with its history.
|
||||
How did you survive?
|
||||
The dark-skinned alpha no longer touches on this topic, and Taehyung simply points the camera at the incredible landscapes. It still takes my breath away: everything around me looks too beautiful, too unreal. He takes several photographs at once for his archive and only after a while realizes that they will very soon arrive at the right place. This thought makes a flame ignite not only in honeyed eyes, but also in the very heart. The guy takes photographs of his favorite view from here too; there are definitely no city streets next to him. This is not Hong Kong, which quickly fell in love. This is not New York, where I rushed for a week. This is not even Seoul, where he began to build his new life. This is something truly beautiful, real, divine, untouched by the modern gaze. Here you can see the past.
|
||||
The driver immediately notices such a reaction and raises the corner of his lips, looking at the omega. On his face. He no longer crosses the line and doesn’t look down where he shouldn’t. He analyzes only the eyes, looking painstakingly into the distance, because of which Taehyung cannot contain the desire to smile even wider. He hastily turns off his camera and is simply content with the view. The further they drive, the more they see wild animals resting and walking in the vast grassy area. Taehyung looks out the open window, noticing a curious zebra not too far away, batting his thick eyelashes and looking at the jeep passing by. When they find themselves further away from this beast, the omega still turns around and laughs, seeing that the zebra is still looking at him.
|
||||
How I missed you...
|
||||
From love for this place in the chest, the flowers open up, as if after a long sleep.
|
||||
— Is this your first time in Botswana? - asks the driver.
|
||||
Taehyung, breaking into a happy smile, turns to him.
|
||||
- Why did you think that?
|
||||
— You are fascinated by the local view.
|
||||
Here anyone will be delighted with what they see.
|
||||
Birds fly above them and sing loudly. There are only animals around: parents and their cubs. On one of the tall trees you can find a cheetah hiding from the scorching African sun. While driving along the rough road, Taehyung managed to see a family of elephants calmly drinking water. The omega captured them in a photograph after leaving the jeep for a couple of minutes.
|
||||
“This is my home,” Taehyung answers proudly, lifting his chin a little and taking in the view in front of him through the windshield. “I was born here,” a wide, snow-white smile sparkles on his lips. - I came to my homeland.
|
||||
Born in a magical and terribly beautiful world. The first steps were taken on this land, in Botswana the omega began to babble incomprehensible words, it was here that he learned a lot, and to this day he remembers every little thing that was hammered into his head not only by his parents, but also by other residents of the state in South Africa. Taehyung kept all the details in his head and heart, took them with him to another country and returned back without forgetting anything. And now he only understands how much he missed his native continent, all his acquaintances, classmates and friends with whom he grew up.
|
||||
But most of all, Taehyung missed his blood. According to his older brother, who is now, apparently, standing on the street and waiting for him to return home after four years.
|
||||
Taehyung counted the hours until the long-awaited trip. And here it is, before his eyes all the beauty that he dreams of on sweet nights.
|
||||
Alpha is really surprised by this fact. I didn’t at all expect to hear that this fair-haired guy was from South Africa, since he didn’t look like one, and thought he was a tourist. Alpha is an ordinary taxi driver, and Taehyung was his first client today. Early in the morning, with a wide smile and a camera in his hands, he jumped into a black jeep, dictating the address and immediately offering money.
|
||||
“I’ll be honest, I couldn’t even think that you were local with alpha eyebrows and grins.
|
||||
“Looking at an Asian man, no one would think he was Botswanan,” Taehyung shrugs, never stopping to smile.
|
||||
“I didn’t mean your race,” the driver immediately corrects him in a kind and gentle tone.
|
||||
Omega arches an eyebrow and looks at the dark-skinned alpha in confusion, gradually plunging into his confused thoughts. The words spoken in his direction had a strange effect on him: they forced him to think and involuntarily swallow his saliva.
|
||||
Most of all, he was afraid that in another country he would cease to be who he truly is. With all his might he kept within himself the origins, traditions and customs of African lands, what he was taught from birth. Parents made kind, peace-loving, honest people out of their sons, depriving both of them of greed and malice. Regardless of the actual nation, they tried to cultivate the soul of the African in them.
|
||||
Taehyung feels like he still is. Four years of living in South Korea did not take away his heart and soul.
|
||||
Kim Taehyung was a Botswana and will be one even in another world.
|
||||
Only after a while the omega’s gaze falls on his own expensive white shoes and denim shorts of the same color just above the knees. On her right wrist sparkles a diamond bracelet, given by her grandfather, which he could not refuse, although he is still ashamed to wear it. He is afraid to find out what the price of this jewelry is. He received it two months ago as a gift for his eighteenth birthday. He refused, begged him to remove such a bracelet from his eyes, assuring him that he could manage without it and live happily, but dad’s father was too generous towards his youngest grandson, with whom he lived under the same roof for four years. Taehyung received and, most likely, will receive things, jewelry, and large sums on his card in Botswana from his grandfather. He doesn’t want this at all on African soil, unless he intends to withdraw this money for those in need.
|
||||
And it was enough for him that he just finally got out of Seoul. I was able to return to my native land. He wants to smell like Africa again, and Africa wants to smell like him.
|
||||
Absorbed in his thoughts and worries, Taehyung does not have time to notice how they arrived at the right place. The place where he was born and where he grew up until he was fourteen years old. The jeep drives at low speed into a small settlement with quite a few neat, simple houses. It's calm and homely here. There is a chance to be saved here. Here Taehyung, surrounded by his past, will be able to breathe deeply. He will even try to forget the horror that happened to him seven years ago.
|
||||
Forgives Botswana all moral and physical pain.
|
||||
The car stops somewhere in the middle of an empty street, and it is at that moment that Taehyung’s heart begins to beat twice as fast. The driver quickly turns off the engine and gets out, heading to the trunk to help the omega with his suitcases, and Taehyung remains sitting in the seat. It’s scary to go out, to some extent even ashamed. He has not set foot on this land for such a long time that he now considers himself unworthy to walk these African streets again, as if he had betrayed them and exchanged them for Seoul ones.
|
||||
My brother didn't do that. Taehyung - yes, and it makes me sick. But at that time, others made decisions for him.
|
||||
His lips stretch into a gentle and weak smile, and his hand reaches for the door handle, which he dares to open after a couple of seconds. He fixes his light eyes on the already visible figure. The guy, who is eight years older than Taehyung, stands with his arms crossed over his chest, smiling at the corner of his lips and looking at the face of his younger brother. Omega closes the door behind him and adjusts the camera strap that hangs around his neck. They look at each other and just smile widely, not believing their own hearts, which tell them that they are together again in this territory. Taehyung still feels like he's in a dream. He wanted this so much. Hundreds of times the guy asked to return to his native land and was refused just as many times, so soon the omega began to doubt the possibility of returning home.
|
||||
“Juhyuk...” he says on an exhale.
|
||||
Taehyung throws the camera on his back and runs up to his brother first, bumping into him. The alpha laughs hoarsely and puts all his strength into the hug, at the same time kissing the ashen top of the head with all his love for this person. Omega is very tiny next to him, just as he was in childhood. Hasn't changed at all. He always stands on his tiptoes when he tries to hug Juhyuk, who is touched and strokes his back with his palm. Taehyung smiles brightly as the alpha easily lifts him off the ground and holds him tightly in his arms, leaving short kisses on his shoulder. Omega pulls back slightly and looks at him, radiating one warmth and sincere happiness that the elder Kim had been missing for six months.
|
||||
Six months apart. For six months they were in torment without each other.
|
||||
“Taehyung,” the omega finally hears his voice. Juhyuk lowers the guy to the ground and kisses his forehead. “Angel,” the younger one looks up at him and wrinkles his nose, smiling.
|
||||
A man can be so gentle and affectionate with him.
|
||||
“I was really looking forward to this trip.”
|
||||
“It seems to me that I will hardly find the strength to let you go again.”
|
||||
Omega laughs slyly and takes a step to the side to see standing small, but beautiful and neat house.
|
||||
“Don’t look,” Taehyung answers, looking at his brother. — What if I never return to Seoul, Juhyuk? — he chuckles and turns around, noticing a taxi driver with two bright suitcases belonging to Taehyung.
|
||||
The elder Kim gives the younger one a suspicious look, after which he approaches the driver of the black jeep and takes the suitcases from him, quietly thanking him. Taehyung nods to the taxi driver from his seat and smiles, thanking him. Omega turns back to his home, causing tears to gather in the corners of his honey-colored eyes. He relaxes his whole body and takes in warm air into his lungs, looking around the house in front of him. He definitely changed in the four years that Taehyung wasn’t here. He has become more beautiful, although he was like that before, but now changes are clearly visible in him on the outside, apparently, everything has become different on the inside. Senior Brother has definitely done a good job of improving everything here. And this concerns not only their hearth, but also neighboring houses.
|
||||
Taehyung's considerable pocket money definitely came in handy. It was not for nothing that he secretly transferred them to Juhyuk.
|
||||
- In what sense will you not come back? - the alpha asks seriously when he comes closer.
|
||||
“I’m just dreaming...” biting my lip.
|
||||
- Are you dreaming?
|
||||
- Do you forbid it? - Grunting cheerfully, he takes the suitcase from his brother and leaves for the house.
|
||||
The man narrows his eyes and looks carefully at Taehyung’s retreating back, thinking and soon following him. Omega is the first to enter the house, holding his breath and pursing his lips until it hurts slightly. Juhyuk is in no hurry, glances at the younger and for some reason worries about his reaction. He carefully steps on the new wooden floor and very slowly looks around, batting his black eyelashes with interest.
|
||||
Four years…
|
||||
Taehyung has really lost hope that he will return to this house again. One side of him asked to come back, the other was afraid. Previously there were four of them, now there are only two of them.
|
||||
Juhyuk closes the doors behind him, never taking his eyes off his brother for a second. Concentrates completely on him. It’s important for him to know that Taehyung still enjoys being here, regardless of some changes. Nothing really has changed: it has become more beautiful and cleaner. Juhyuk tried very hard to put his house in order and completely immersed himself in this matter. I was distracted by physical labor, I didn’t want to let pain and sadness get to me after I was left completely alone in South Africa. After my grandfather took his younger brother to live with him in Seoul.
|
||||
Dad's father expected that the fourteen-year-old would be much better off in Korea than in Botswana. There, the young omega would try to think about other things, devote time to various creative activities, since in Seoul there is such an opportunity, in Botswana there is no. Taehyung did just that, or rather, he simply listened to his grandfather and went to the school, which was crowded with students, unlike African schools. There were not so many children in school in my homeland, not even half. Therefore, at first Taehyung was very constrained around his peers: it took him quite a long time to get used to such big changes, and sometimes he was afraid to be in such large companies. They didn't look like Botswanans. Completely different people: they have a different lifestyle, different views and strange behavior.
|
||||
But at some point Taehyung realized that he just had a different heart.
|
||||
It was a very quiet six months. At night, under the blanket, he cried, trembled all over and moved his wet peach lips, asking for his brother. Grandfather tried to take Juhyuk with him, but the alpha categorically refused such an offer. At that time he was twenty-two years old, and he had the right to decide for himself what was best for him. The grandfather did not insist, he only warned that he would definitely help him with money. And Juhyuk sometimes flew to Seoul just for Taehyung. And it was only during these periods that the younger brother truly felt good, as if nothing terrible had happened in his short life.
|
||||
“Beautiful,” Taehyung says with a smile, looking at the alpha.
|
||||
The elder lets out a quiet chuckle and leaves the suitcases against the wall, moving closer to the omega.
|
||||
- I'm glad you think so.
|
||||
“It’s still the same comfort as before,” he sighs in fascination, continuing to look around. - Still the same warm atmosphere...
|
||||
There was no such warmth in Seoul.
|
||||
“I was afraid you wouldn’t like it,” says Juhyuk. “I tried not to change anything too much, so as not to deprive this house of its past.”
|
||||
His words make Taehyung feel warmer.
|
||||
“You really have preserved the past in this little magical house.”
|
||||
“Our memories will not disappear from here.”
|
||||
The younger Kim turns his head towards the soft cream sofa and pays attention to the small glass table next to it. You don’t have to look at him for long; he quickly notices his own photograph in a small frame. It's a selfie, and my brother actually printed it out, framed it, and put it in a prominent place. Taehyung smiles widely in the photo, because he then took a photo specifically for Juhyuk, who was suffocating without him in Botswana, and the omega quickly turned on the front camera and improved his brother’s mood with his smile.
|
||||
“Juhyuk,” the alpha hums questioningly, looking at Taehyung, who has approached slowly striding towards the sofa and keeping his gaze on the framed photo. “I want to stay,” he says with fear, fearing the elder’s reaction. “I’m not drawn back to Seoul,” he bites his lip until it hurts and looks at his brother.
|
||||
The alpha sighs and approaches him, taking the angelic face into his large palms and starting to examine every millimeter. So pale. The skin is light, not the same as before.
|
||||
Korea took away one of his highlights. A few years ago, the color was dark, tanned due to the hot African sun, but as soon as he went to another continent, he immediately turned pale. But still he did not stop shining with beauty. His facial features are unique, unusual, and to some extent rough. Juhyuk will never get tired of telling his brother how handsome he is, but he will continue to be shy and kick him with his fists so that the alpha will stop. Juhyuk is too gentle and kind to him, but also strict, like a real big brother.
|
||||
Only now I really want to argue with him and insist on my desire.
|
||||
“How many more times do we have to raise this topic, Taehyung?” — Juhyuk asks, stroking the omega’s cheekbone with his thumb.
|
||||
- Until you agree...
|
||||
“Stop it,” a little harsher.
|
||||
Taehyung chews his lips and looks him straight in the eye, after which the alpha pulls away and sits on the sofa.
|
||||
The elder Kim does not accept his brother's ardent, real desire to stay at home. It is unbearable.
|
||||
It is unbearable to live where the heart does not lie.
|
||||
“Juhyuk...” he whispers pleadingly, sitting down next to him.
|
||||
“I’ve told you the answer many times,” the alpha says calmly.
|
||||
“And every time I don’t like him.”
|
||||
“But he won’t change,” he says sharply, slightly pursing his lips.
|
||||
Taehyung reaches out to his brother and puts his head on his chest, lifting his legs onto the sofa. Curls up like a ball.
|
||||
“You’re unfair to me,” he frowns at the alpha, weakly hugging him.
|
||||
He always refuses Taehyung's request to stay. Omega has been begging for the third year, but he still doesn’t get the words he needs. Juhyuk becomes gloomy when he hears such words from him, changes his tone of voice and literally breaks Taehyung’s little dreams. He is still surprised that the alpha allowed him to fly to his homeland at least for a while, in order to relax and take his mind off his studies. Omega tried very hard: he sobbed into the phone like crazy and shouted at his brother, trying to convey how much he missed him. His whole face was so swollen from crying that Juhyuk, seeing him so disappointed on his phone screen, decided to just give up after a couple of days and allowed him to visit South Africa four years later.
|
||||
“You’re the one who’s being unfair to yourself,” Joohyuk says and looks straight into his honey eyes. “You have no future here, so you better think about your studies, which I will never allow you to quit,” Taehyung shrinks a little from such a tone. “You came here to relax and will definitely come back.”
|
||||
Omega, with every living cell of his body, does not want to fly to Korea. He lives there with his grandfather in a huge mansion, and, probably, any resident of Africa would dream of being in such a place, but not Taehyung. Loves his grandfather, but his heart is definitely drawn to Botswana. Here he is much more comfortable and warmer in every sense. Not only the soul took a long time to get used to the new environment, but also the body itself. Due to climate change, Taehyung was often sick and sat at home with a cold and terrible pain in his bones.
|
||||
“I could fly to Seoul only for exams, but I would study here around the clock...” he says with another concern, already realizing that the alpha will not like this.
|
||||
Juhyuk gives him an angry look, narrowed pupils threatening and outlining his cheekbones. Omega purses his lips and still does not move away from his brother, only hugs him tighter and frowns slightly, knowing about another refusal.
|
||||
Taehyung went to an African school early, so he graduated from a Korean school at the age of seventeen, which is why he was the youngest in his class. And now, being in his first year of journalism, the omega remains the smallest guy among his classmates. This is not scary, since Taehyung tried to find a common language with the guys, wanted to join their team, and he really managed to do this in a couple of months. The relationship between them was so good that some of the guys, including Taehyung himself, agreed to fly to Beijing in November. And when the trip was already approaching, Kim heard the long-awaited words from his older brother, who pleased him that the omega could fly to Botswana for a while. Taehyung didn’t spend a minute thinking and immediately chose South Africa, throwing China out of his mind.
|
||||
“No,” kisses the younger alpha on the forehead.
|
||||
“You’re disgusting, Juhyuk,” Taehyung snorts, rolling his eyes and rubbing his head against someone else’s chest.
|
||||
He laughs hoarsely.
|
||||
- Nasty?
|
||||
“That’s right,” he immediately confirms. “I don’t want to leave you here alone,” he sighs, closing his eyelids. — I should be in Botswana.
|
||||
My parents have not been around for four years, and the two of them must live together, and not be scattered across different continents.
|
||||
“Botswana is not the same anymore, angel,” he hugs his younger brother.
|
||||
Taehyung doesn’t understand and looks at Joohyuk questioningly. But instead of answering, the alpha only twitches the corner of his lips and touches his knuckles cheeks.
|
||||
This movement quickly drives away bad thoughts about home from the guy.
|
@ -1,178 +0,0 @@
|
||||
Сегодня во дворе вновь не стоит покой, ведь хищный зверь уже не спит.
|
||||
Каждый, находящийся на ядовитой территории, прикусывает свой язык, точно ждёт, когда их всех в клочья разорвут: жестоко и кровожадно. Оборачиваются по сторонам: судорожно и пугливо. В их венах кровь стынет, сердце глухо бьётся в груди, и черти перед глазами пляшут.
|
||||
Никто им не позволяет сдвинуться с места и укрыться хотя бы за высокими деревьями поблизости. Их могут и там обнаружить. Они слышат очень тихие шаги, и всё это лишь воображение, построенное на страхе и испуге, которые пульсируют острой болью в висках. Шепчут слова богам, в которых они верят и которым поклоняются, и раз эти люди все ещё живы на этой земле, то, вероятно, их слышат. Но им самим кажется, что если двинутся лишний раз слишком резко, то их смогут найти и не оставят ничего похожего на человека. Мысль подобная будоражит и сводит с ума всё сильнее с каждой никчемной минутой, пропитанной трусостью.
|
||||
Единственный хозяин территории, где находятся запуганные, несмелые, изредка очерчивает их силуэты холодным взглядом и восхищается тем, сколько в них страха живёт только из-за одного живого существа. Они ничего не знают о смелости. Ему порой бывает тошно от подобного поведения, но винить этих людей ни в чём не собирается, так как он один тут знает язык не только человеческий. Он вырос в таких условиях, был воспитан по-другому: необычно и дико для остальных жителей планеты. Почти с рождения учился тем вещам, из-за которых могут посчитать его сумасшедшим, безумцем на этой ядовитой территории. А яд протекает по земле только из-за образа жизни, взглядов, принципов, традиций.
|
||||
Альфа смотрит на вооруженных охранников его дома — те воевали, видели множество смертей, но по-прежнему имеют страх в груди, — теперь выразительные глаза держит на оранжевом заходящем солнце, которое своим тусклым светом освещает всю Ботсвану, и позже возвращает к своим рукам с двумя большими острыми ножами. Их он звонко точит друг об друга, замечает яркий блеск и отражение своего лица. Видит того, кого боятся многие люди на этой земле. Сам себе построил ужасающую репутацию.
|
||||
Мужчина вновь отвлекается от своего занятия, откладывает холодное оружие на каменистую землю и поворачивает голову. Слышит приближающиеся шаги и полностью переключается на этот звук. Темнокожий альфа лет двенадцати всем телом трясётся, и по вискам его капельки пота катятся. Поднос, который он держит в своих детских руках, шумит вместе с его сердцем. Боится, но пытается скрыть это перед хозяином ядовитой территории. А тот всё видит, не злится, только лишь чувствует, как пробуждается в нём интерес. Этот парнишка, двигающийся в его сторону, до ужаса сейчас напуган, страшится живого существа, но продолжает идти к нему, периодически осматривая огромный двор, откуда может выскочить он. С таким же страхом оглядываются и охранники, стоящие у высоких железных решетчатых ворот.
|
||||
Они все дети. Они все одинаковые.
|
||||
Мальчишка приближается и сразу опускает запуганный взгляд, жуя губы и понятия не имея, с чего ему нужно начать. Здесь он новенький: не прошла и неделя с его прибытия в этот огромный дом.
|
||||
— Сэр… — совсем негромко слышится его детский голос, а старший только выгибает бровь. — Чон-Рено, — вспоминает, как папа говорил ему, что хозяин дома больше предпочитает, чтобы его звали по фамилии. — Ваш… — он протягивает поднос чуть вперёд и понимает, что снова забыл, как называется алкоголь, наполняющий небольшой хрустальный стакан. — Ваш… — повторяет и проглатывает слюну. — То, что вы просили.
|
||||
— Ром, — помогает ему Чон-Рено. — Это ром, Ези, — берёт стакан с напитком и кивает. Мальчик поднимает на него удивлённые глаза, не рассчитывая, что мужчина будет помнить его имя. — Почему ты так боишься? — сужает свои ярко-серые глаза, немного склонив голову.
|
||||
Ези хлопает густыми чёрными ресницами.
|
||||
Неужто старший альфа действительно не знает, почему всем на этой территории сейчас страшно? Даже сам Бог об этом догадывается.
|
||||
Должен и львиный Бог догадаться…
|
||||
— Вы выпустили Диего, — произносит это так, точно пытается донести до Рено всю глубину его безумия.
|
||||
— Он не монстр, — стальной голос пугает.
|
||||
— Он хищник, сэр…
|
||||
Уголки сухих губ старшего немного дёргаются, и безразличный отводится взгляд в сторону.
|
||||
Его хищник.
|
||||
Диего поблизости не видно. Его мальчик развлекается, довольствуется хождением по земле, чистым вечерним воздухом и большим оранжевым солнцем, которое дарит свой теплый свет. Зверь его лучи ловит и рычит. Тоже живое существо, и оно точно так же, как и люди, желает быть свободным и отпущенным, но в отличие от жалких людей, он не трус и не боится созданного Богом. Сильнее, мудрее и опаснее. Этого могущественного хищника наконец слышно: звуки, которые он издаёт, привлекают драгоценное внимание Рено, а темнокожего мальчишку заставляют вздрогнуть и обернуться, огромными напуганными глазами шастая по территории. Страх у него танцует в крови, и сердце бьётся загнанной в угол жалкой пташкой. Он содрогается от противоречивых ощущений, что замечает и мужчина рядом с ним.
|
||||
Чон-Рено бесцветно смотрит на Белло Ези, на двенадцатилетнего альфу из бедной семьи, работающей в этом большом особняке. Мужчина знаком с ним пару дней, и тот ещё никак не привыкнет к обычному образу жизни хозяина этого очага ужаса и безумия.
|
||||
— Ези, — холодно призывает и получает должное внимание к себе. — Пойди в дом, попроси положить мясо для Диего, — младший быстро кивает и собирается уйти. — И принесёшь мне его сам, — а эти слова уже казались намного страшнее.
|
||||
— Что?.. — переспрашивает, не веря.
|
||||
— Ты меня услышал.
|
||||
Но кажется, что ослышался.
|
||||
В груди копошится ужасное чувство трусости и обиды, но Ези никак не может возразить или высказать своё нежелание выходить во двор во второй раз, да и ещё с сырым куском мяса для хищника. Ему остаётся только невнятно опять кивнуть старшему и торопливо пойти к лестнице, ведущей к дверям особняка.
|
||||
А сам владелец дома хмыкает на пугливую реакцию мальчишки. Он, не сделав глотка, опускает стакан рома на землю и поднимается с небольшого кресла. Разминая ладонью шею, на которой детально прорисована морда льва, альфа точно готовится к жестокому кровопролитному бою. Опять. Его серые глаза яркие, спокойные, однако заинтересованность в предстоящем через пару минут в зрачках мелко блестит. Проводя кончиком языка по нижней губе, Чон-Рено взглядом бегает по обширному двору, где пока не виднеется любимая фигура — она слышится так чётко и громко, что невозможно скрыть своё восхищение и искреннюю любовь. Но эти звуки нисколько не могут успокоить охранников у ворот. Они к ним не привыкли. Никогда не привыкнут, потому что не воспитали его, как это сделал Чонгук.
|
||||
Когда из дома наконец-то выходит Ези, держа в руках небольшой поднос с куском мяса, Рено вновь усмехается и заводит руки за спину. Ожидает его, смотрит и издалека слышит, как отчаянно ломает сердце грудную клетку маленькому альфе. Тот всё ближе к нему, часто оглядывается по сторонам и что-то шепчет себе под нос. Неужели молитвы? Мужчина сгибает бровь и поворачивает голову, слыша ещё один громкий рёв, которым он мог только гордиться. Его мальчик очень подрос, стал крепким, поэтому всех так пугает. Может быть, у Чон-Рено его звуки вызывают довольную улыбку, но у Ези они вызывают желание спрятаться за одну из колонн. Только его ждёт сам Рено, и он не может себе позволить выполнить желаемое, иначе правда получит заслуженное наказание. А этого сейчас хочется меньше всего.
|
||||
Уже каждый житель Ботсваны наслышан о жёстких методах расплаты за непослушание.
|
||||
— Сэр, вот мясо, — шепчет Ези, становясь напротив мужчины и чувствуя, как слёзы подступают к выразительным глазам. — Можно я уже пойду в дом?..
|
||||
Детское сердце так и просится к папе.
|
||||
— Нет, — мороз и холод.
|
||||
Мальчик от подобного ответа сильнее сжимается и прикусывает до боли губу, а затем послушно переводит взгляд туда, куда смотрит Чонгук.
|
||||
Теперь глаза Диего появляются в полутьме.
|
||||
Страх бьется в груди вторым сердцем, в горле резко пересыхает. Ези хочет убежать отсюда, когда видит, что хищное животное выходит из-за угла особняка, показывает, что здесь является тоже хозяином. Он смотрит на темнокожего мальчика и стоящего рядом с ним высокого мужчину, показывающего гордую улыбку на сухих губах. Шаги его, медленные, уверенные, ведь он хорошо знает себе цену и как величественно он сейчас выглядит под оранжевым светом закатного неба. Гуляет смело и грациозно, пронзает острым взглядом, чуя еду где-то рядом с собой. Взгляд — дикий, свободный, всесильный. Полоски, плавно расположенные на его бархатной шерсти, всегда могли привлекать чужой взгляд, сводить с ума и молить о помиловании. Тёмные полосы — тени от высоких деревьев, а между ними горят желтые блики африканского солнца. Весь вид зверя умиротворённый, но от него почему-то дрожь бежит кошмарно по коже.
|
||||
Так красив и молод. Рено от него заинтересованный взор отвести не в состоянии, как и застывший бедный Ези. Он впервые видит зверя так хорошо и чётко, до этого был лишь наслышан о могущественном Диего, чей внешний вид вынуждает каждого поверить в Бога. Даже обыкновенные шаги гипнотизируют всех на этой территории.
|
||||
Чонгук опускает глаза на Белло Ези и хмыкает.
|
||||
— Поднеси ему поближе его закуску, — мальчик глотает нервно слюну и ошарашенно смотрит снизу вверх на Чон-Рено. — Единственный способ спастись от хищника — скормить ему что-нибудь другое, — читает поучительно ему то, во что Ези не верит, и старший опускается на корточки перед ним, заглядывая в стеклянные округлившиеся глаза. — Ты не хочешь быть съеденным им, ведь так? — тот молчит. — Тогда дай ему то, что он хочет, и он тебя не тронет.
|
||||
— Сэр, пожалуйста, — молит его дрожащим голосом. — Он тигр, я никогда к ним не подходил… — говорит ему очевидные вещи, надеясь на жалость. — Это опасно…
|
||||
— Отнеси Диего это мясо, Ези, — твёрдо и неоспоримо.
|
||||
В миг мальчику становится страшнее от Чон-Рено Чонгука, нежели от огромного молодого тигра, медленно движущегося в их сторону.
|
||||
— Я не могу… — тихо шепчет, смотря лишь в серые глаза напротив.
|
||||
А кто бы смог? Видимо, только сам хозяин этого зверя.
|
||||
— Ты не должен так говорить, — Чонгук немного наклоняет голову к плечу. — Ты ведь даже не приблизился к нему, значит, и не знаешь точно, можешь или же нет, — Ези поджимает губы. — Вперёд, — приказывает, кивнув в сторону Диего.
|
||||
Бенгальский тигр всё ближе к ним, продолжает двигаться и держит свои жёлтые глаза только на незнакомом ему человеке. Впервые видит, поэтому так хищно анализирует, заставляя Ези затаить дыхание и сделать наконец-то напряженный шаг вперёд. К Диего.
|
||||
За ним внимательно наблюдает и Рено, который спокойно встаёт обратно на ноги и выпрямляется в спине. Мальчик правда хорошо держится. Чонгук уже рассчитывал, что он расплачется и просто унесётся отсюда. За ним бы не пошёл: не ему судить подростка за вполне существенный и логичный страх. Не каждый здесь решается подходить к Диего и кормить его. А правильнее, так ещё никто не делал. Только Чон-Рено к нему настолько близко находится: живёт с ним в одной комнате и не смеет даже бояться этого зверя, которого сам спас, сам и воспитал. Тигр его лишь в шутку может укусить, не причиняя сильной боли. Но Ези кажется, что настал тот день, когда ему придётся попрощаться со своей короткой жизнью. Уж точно не думал, что умрёт от клыков тигра. Подобные ужасы ему в голову никогда не лезли.
|
||||
Диего, замечая и чуя кусок мяса, ускоряет свой шаг и издает негромкий рык, что может только сильнее напугать мальчика, который по-прежнему надеется на разумные мысли Чонгука, стоящего позади, но останавливаться не собирается.
|
||||
Раз суждено умереть сегодня, пусть так и будет.
|
||||
Ези уже смело смотрит в глаза приближающемуся к нему тигру и останавливается в паре метров от Чон-Рено, опускаясь на корточки и держа свой взгляд на безумно красивом звере. Этому смелому шагу старший альфа даже немного удивляется, наблюдая за происходящим и слегка ухмыляясь. Младший прикусывает нижнюю губу и опускает взор на алый кусок мяса на серебряном подносе, который он кладёт на каменистую землю, делая неуверенный маленький шаг назад. Он до боли жмурит глаза и сжимает крепко пальцы в кулак, уже начиная чувствовать несуществующую боль, принесенную ему в скором будущем голодным тигром. За эти секунды успевает попрощаться со своими родителями, шепотом просит прощения у них за все свои оплошности, слушая приближающиеся шаги. У него, кажется, сердце остановится раньше, чем зверь подойдёт.
|
||||
Но…
|
||||
Солнцем целованный тигр — Диего — рычит на весь двор, величественно разгоняя птиц на деревьях и на крыше особняка. Ези испуганно распахивает веки и видит перед собой злую морду и огромную пасть животного, которое всаживает в следующую секунду клыки в кусок сырого мяса. Он не прекращает рычать на мальчика, точно пытается что-то ему сказать этим. Но подросток только ошарашенно смотрит в жёлтые глаза и забывает дышать, падая пятой точкой на землю и открывая рот. Диего лишь забирает мясо и отбегает в сторону, швыряет свою закуску подальше от мальчишки, ложится рядом с ней и спокойно начинает облизывать и поедать любимое лакомство, лишая Ези мысли о возможной смерти. С удовольствием и рычанием отрывает маленькие кусочки, сразу же их проглатывая и иногда поглядывая на своего хозяина.
|
||||
Чонгук слабо улыбается, смотря на тигра и пряча обе руки в карманы чёрных брюк-карго. Он медленно переводит с него взгляд на мальчика, лежащего на земле и глядевшего с прежним шоком на тихого Диего, который больше не обращает на него никакого внимания. Зверь занят своей настоящей едой, а не человеком, который поднёс её ему. Наверное, только Чонгук до последних секунд был убеждён, что Диего не тронет Ези.
|
||||
В своём тигре и в своих львах никогда не сомневается.
|
||||
Каждое их движение наперёд знает.
|
||||
Темнокожий мальчик и многие иностранцы рассчитывают, что каждый африканец разговаривает с животными на равных, понимает их мысли и язык. Но во всей Ботсване мало таких. Единицы. И среди них на вершине стоит Чон-Рено Чонгук — львиный Бог. Только Белло Ези сейчас кажется, что мужчина в свои двадцать восемь лет стал ещё и покровителем тигров.
|
||||
У молодого альфы с трудом получается подняться с земли, отвести взгляд от Диего и обернуться к его хозяину, смотревшему так остро и пронзительно на него. Теперь Чонгук к ним приближается: спокойно и медленно. Но Ези больше не боится, будто тигр одарил его невероятной храбростью из-за близости с ним. Альфа верит в подобные сказки, услышанные из чужих уст. Верит и в то ужасающее чувство, что хранится в груди мужчины, у кого на шее чёрными чернилами изображена морда льва. Истинный львиный Бог. Этот Бог становится в метре от уже не напуганного мальчика, а восхищенного увиденным две минуты назад. Конечно же, его поразило то, как близко к нему был молодой бенгальский тигр. Эту историю друзьям и одноклассникам рассказывать побежал бы, но те ни за что не поверят, поэтому важное воспоминание поселит глубоко в сердце.
|
||||
— Сэр… — шокировано начинает Ези, глотнув слюну. — Диего не тронул меня, — смотрит на Чонгука, хмыкнувшего себе под нос. — Почему? Он ведь мог…
|
||||
Хватило бы пары секунд, чтобы зверь кровожадно растерзал его.
|
||||
— Ты скормил ему что-то другое и остался нетронутым, — раздаётся басистый тяжелый голос. — Клыки и когти не всадились в тебя лишь по этой причине. Он хищник, а не убийца, — Ези немного расслабляется и коротко кивает, запоминая его слова. — Ему нужна еда — не чья-то смерть, — Рено, закончив, смотрит уже на своего полосатого мальчика.
|
||||
— Он очень красивый, — тихо признается Ези, тоже взглянув в сторону зверя.
|
||||
Чонгук опускает на него глаза и усмехается.
|
||||
— Невероятно красивый, — вслух подтверждает.
|
||||
Ези улыбается и в конечном итоге не таит в себе вопрос:
|
||||
— Могу я теперь пойти?..
|
||||
Рено кивает без слов.
|
||||
Ези широко улыбается и берёт с земли поднос, после чего бежит в огромный особняк, желая рассказать о случившемся своему отцу, который отвечает за кухню.
|
||||
На полосатой шерсти сказочно играют яркие лучи заходящего африканского солнца. Чонгук в данный момент очарован этим видом перед собой. Диего сильно подрос. Ему только полтора года, но размеры у него, как у взрослого тигра. Сложно поверить, что не так давно зверь был зверьком, совсем крохотным, и постоянно вился рядом с Чон-Рено, не отходил толком от него: лез, игриво рычал и кусал хозяина за ноги, желая привлечь должное внимание к себе. Привык к Чонгуку слишком быстро. После того, как Чонгук забрал его раненным взрослыми зверями к себе, тигрёнку хватило две недели, чтобы довериться полностью и тайно залезать на грудь альфы по ночам. А когда не мог уснуть, царапал и кусал за подбородок, вынуждая Чонгука проснуться. И тот просыпался, играл, кормил и возвращался обратно в постель, а за ним и маленький Диего своей величественной походкой.
|
||||
По сей день тигр делает то же самое.
|
||||
Чонгук с улыбкой на губах медленно подходит к животному, которое с диким аппетитом закидывает в рот оставшийся маленький кусок мяса. Диего сам подрывается с места и бежит к своему хозяину, присевшему на корточки. Тигр сразу лезет на него, будто с настоящими человеческими объятиями, игриво начинает издавать рыки, отчего Рено шире улыбается, хлопая и гладя большой ладонью зверя по животу. Тот не успокаивается, уже языком проводит по шее альфы — показывает свою истинную любовь к нему. Чонгук опускается на землю и двумя руками ведет по мягкой шерсти тигра, уделяя положенное внимание месту за ушами, как Диего и любит. С подобной лаской становится котёнком. Крутится, облизывает, где хочет, и тычется носом в подбородок Чон-Рено, который смеётся над таким поведением. Его за такое никогда никто не посмеет поругать.
|
||||
— С каждым днём тяжелее и тяжелее становишься, Диего, — хмыкает Чонгук и продолжает гладить его. — Своим видом всех вокруг пугаешь, большой мальчик, — тигр отстраняется и обходит мужчину, уже прижимаясь к его спине и проводя языком по загривку русых волос. — Одного меня никогда не вспугнёшь, даже не рассчитывай на мой страх, — Рено поворачивает голову к Диего. Тот на него тихо рычит, словно отвечает на сказанные слова. — Мы с тобой два хищника, и одному Богу известно, кто из нас опаснее.
|
||||
А Чон-Рено уже знает, кто опаснее на этой земле.
|
||||
Так и жил: шалил в мечтах со скуки, терпел муки и разочарования. В который раз дал он себе слово скорее вернуться домой. Лишь там обретёт спасение, покой в сердце, повезет — кусочек счастья.
|
||||
Это место заставит его забыть все печали и всю боль, разрешит чувствовать себя так, будто он выпил бутылку вина.
|
||||
Очередной щелчок и очередной сохраненный божественный кадр на флешке дорогого нового фотоаппарата. Медовые глаза мгновенно цепляются за сделанную фотографию, что высвечивается на небольшом экране. Здешние пейзажи до конца жизни будут вынуждать молодого парня отчетливо ощущать очарование, восторг и восхищение. Взглянув на эти красоты, человек в состоянии избавиться от любой заразы и боли. Здесь ослепшие станут зрячими, оглохшие познают мир звуков. Чистое голубое небо, тёплое ноябрьское солнце, высокие и низкорослые деревья, бегающие по территории дикие животные, всё — всё вынуждало улыбнуться и расслабиться.
|
||||
Молодой альфа за рулем чёрного джипа, на котором было легко передвигаться по неровным дорогам, поворачивает голову к сидящему на пассажирском сидении омеге, который рассматривает с легкой улыбкой на губах сделанную фотографию. Среди пепельных шелковистых волос путаются чистые лучи необъятного солнца. Скользя ниже, они решаются трогать открытые участки светлой кожи, точно специально освещают заметные следы на теле.
|
||||
Водителя с первых секунд привлекла одна яркая черта этого парня. Это быстро бросилось в глаза. Всю дорогу мужчина не находит сил выкинуть из головы любопытство: то следит за дорогой, то переводит взгляд на пассажира, тайно рассматривая не только симпатичное лицо.
|
||||
Прежде не удавалось подобное увидеть.
|
||||
Это поневоле устрашает, пугает, вынуждает задуматься и свои теории в мыслях построить, а спросить африканец вряд ли осмелится. Возможно, омега не хочет говорить об этом, скрывает что-то и чувствует боль, когда посторонние люди обращают внимание.
|
||||
Альфа жуёт нижнюю губу и смотрит на дорогу, несильно нажимая на педаль. Омега хлопает ресницами и медленно поворачивает голову, взглянув на водителя. Рассчитывал, что ему кажется, что парень его детально рассматривает по довольно ясной причине, но теперь окончательно убедился в этом. Тот сразу паникует, стыдясь своего бессовестного поведения. А омега тем временем просто смущается, покрывается легким румянцем и тянет глубокий вырез белой футболки вверх, слегка прикрывая острые ключицы, которые только что внимательно исследовали. Обоим от этого действия становится ещё более неловко.
|
||||
У Ким Тэхёна толком ничего не получается скрыть. Остаётся смириться — этим он занимается на протяжении семи лет.
|
||||
— Извините, — тихо говорит водитель и поджимает губы. — Я не должен был.
|
||||
— Вы не первый и не последний, — тянет губы в легкой улыбке Тэхён и смотрит по-доброму на альфу. — Я должен уже привыкнуть к подобному вниманию, не переживайте, — хмыкает и переводит взгляд на экран фотоаппарата, настраивая цвета.
|
||||
— Это не некрасиво, — решается на комплимент и боится реакции парня, слыша тихий смех. — Правда, — кивает несколько раз он, следя за дорогой. — Скорее, это очень необычно, загадочно…
|
||||
— В этом нет никакой загадки, — отвечает Тэхён и мягко улыбается.
|
||||
Всё элементарно.
|
||||
Но все продолжают задавать вопрос: «Что это?» С кем бы ни познакомился — обязательно спросят, а он спокойно ответит. Ему не надоело. С каждым разом всё сильнее и сильнее поражает своей историей.
|
||||
Как выжил?
|
||||
Темнокожий альфа больше не затрагивает эту тему, да и Тэхён просто направляет камеру на невероятные пейзажи. До сих пор дух захватывает: слишком красивым, слишком нереальным всё вокруг выглядит. Он делает сразу несколько фотографий для своего архива и лишь через некоторое время понимает, что они совсем скоро прибудут к нужному месту. Эта мысль заставляет зажечься пламя не только в медовых глазах, но и в самом сердце. Парень и отсюда фотографирует любимый вид, рядом с ним точно не стоят городские улицы. Это не Гонконг, который быстро полюбился. Это не Нью-Йорк, куда помчался на неделю. Это даже не Сеул, где начал строить свою новую жизнь. Это нечто поистине красивое, настоящее, божественное, не тронутое современным взглядом. Тут можно увидеть прошлое.
|
||||
Водитель сразу замечает подобную реакцию и приподнимает уголок губ, смотря на омегу. На его лицо. Больше не переходит черту и не опускает взгляд куда не положено. Анализирует лишь глаза, глядевшие кропотливо в даль, из-за которой у Тэхёна не получается сдержать в себе желание ещё шире улыбнуться. Он спешно отключает свой фотоаппарат и просто довольствуется видом. Чем дальше они едут, тем больше видят диких животных, отдыхающих и гуляющих по бескрайней травянистой местности. Тэхён выглядывает в открытое окно, замечая не слишком далеко любопытную зебру, которая хлопает густыми ресницами и глядит на проезжающий мимо джип. Когда они оказываются уже дальше от этого зверя, омега всё же оборачивается и смеётся, видя, что зебра до сих пор смотрит на него.
|
||||
Как же скучал…
|
||||
От любви к этому месту в груди цветы раскрываются, точно после долгого сна.
|
||||
— Вы впервые в Ботсване? — спрашивает водитель.
|
||||
Тэхён, расплываясь в счастливой улыбке, поворачивается к нему.
|
||||
— Почему вы так подумали?
|
||||
— Вы очарованы местным видом.
|
||||
Тут любой в восторг от увиденного придёт.
|
||||
Птицы над ними летают и громко поют. Вокруг одни животные: родители и их детеныши. На одном из высоких деревьев можно обнаружить гепарда, прячущегося от палящего африканского солнца. Пока ехали по неровной дороге, Тэхёну удалось увидеть семейство слонов, пьющих спокойно воду. Их омега запечатлел на фотографии, выйдя из джипа на пару минут.
|
||||
— Это мой дом, — с гордостью отвечает Тэхён, приподнимая немного подбородок и впитывая глазами вид перед собой через лобовое стекло. — Я здесь родился, — на губах сверкает широкая белоснежная улыбка. — Я приехал на Родину.
|
||||
Родился в волшебном и до жути красивом мире. Первые шаги были проделаны на этой земле, в Ботсване омега начал лепетать невнятные слова, именно здесь многому научился, и по сей день он помнит каждую мелочь, которую в голову вбивали не только его родители, но и другие жители государства в Южной Африке. Тэхён хранил в голове и сердце все детали, унёс их вместе с собой в другую страну и вернулся обратно, ничего не позабыв. И сейчас только понимает, насколько сильно он скучал по родному континенту, по всем знакомым, одноклассникам и друзьям, с которыми рос.
|
||||
Но больше всего Тэхён соскучился по своей кровинке. По старшему брату, что сейчас, видимо, на улице стоит и ждёт его возвращения домой спустя четыре года.
|
||||
Тэхён часы считал до долгожданной поездки. И вот она, перед глазами вся красота, снящаяся ему сладкими ночами.
|
||||
Альфа действительно удивляется озвученному факту. Нисколько не ожидал услышать, что этот светлый паренёк родом из Южной Африки, поскольку таковым не выглядит, и считал его туристом. Альфа ведь обыкновенный таксист, и Тэхён у него был первым клиентом сегодня. Рано утром с широкой улыбкой и фотоаппаратом в руках запрыгнул в чёрный джип, диктуя адрес и сразу предлагая деньги.
|
||||
— Признаюсь честно, я не мог и подумать, что вы местный, — дергает бровями альфа и усмехается.
|
||||
— Взглянув на азиата, никто бы не решил, что он ботсванец, — пожимает плечами Тэхён, ни на секунду не прекращая улыбаться.
|
||||
— Я не имел в виду вашу расу, — сразу поправляет его добрым и мягким тоном водитель.
|
||||
Омега выгибает бровь и в неясности смотрит на темнокожего альфу, постепенно погружаясь в свои запутанные мысли. Сказанные в его сторону слова странным образом повлияли на него: вынудили задуматься и невольно проглотить слюну.
|
||||
Больше всего боялся, что в другой стране прекратит быть тем, кем истинно является. Всеми силами держал в себе истоки, традиции и нравы африканских земель, то, чему его с рождения учили. Родители из своих сыновей делали добрых, миролюбивых, честных людей, лишая обоих алчности и злобы. Независимо от настоящей нации, они пытались взрастить в них душу африканца.
|
||||
Тэхён чувствует, что и ныне таков. Четыре года жизни в Южной Корее не отняли у него сердце вместе с душой.
|
||||
Ким Тэхён был ботсванцем и будет являться им даже на другом свете.
|
||||
Только через некоторое время взгляд омеги падает на собственную дорогую белую обувь и такого же цвета джинсовые шорты чуть выше колен. На правом запястье сверкает бриллиантовый браслет, подаренный дедом, от которого отказаться не мог, хотя до сих пор стыдится его носить. Узнать боится, какова цена этого украшения. Он его получил два месяца назад в качестве подарка на свой восемнадцатый день рождения. Отнекивался, умолял убрать с глаз подобный браслет, уверяя, что и без него обойдется и будет жить счастливо, однако отец папы уж чересчур щедр по отношению к своему младшему внуку, с которым четыре года жил под одной крышей. Тэхён получал и, вероятнее всего, будет получать и в Ботсване от деда вещи, украшения, крупные суммы на карту. Ему этого совершенно не хочется на африканской земле, если только не собирается снимать эти деньги для нуждающихся.
|
||||
А ему самому хватило и того, что он просто, наконец-то, выбрался из Сеула. Смог вернуться на родную землю. Он хочет вновь пахнуть Африкой, а Африка — им.
|
||||
Поглощенный своими мыслями и тревогами, Тэхён не успевает заметить, как они приехали к нужному месту. Месту, где он родился и где рос до четырнадцати лет. Джип на низкой скорости въезжает в маленькое поселение с довольно большим количеством аккуратных простых домов. Здесь спокойно и по-домашнему уютно. Здесь есть шанс спастись. Здесь у Тэхёна, окруженного своим прошлым, получится дышать полной грудью. Он даже постарается забыть тот ужас, случившийся с ним семь лет назад.
|
||||
Простит Ботсване всю моральную и физическую боль.
|
||||
Машина останавливается где-то посередине пустой улицы, и именно в этот момент сердце Тэхёна начинает биться в два раза быстрее. Водитель быстро глушит мотор и выходит, направляясь к багажнику, дабы помочь омеге с его чемоданами, а Тэхён так и остаётся сидеть на сиденье. Страшно выходить, в какой-то степени даже стыдно. Он такое долгое время не ступал на эту землю, что сейчас считает себя недостойным вновь шагать по этим африканским улицам, точно предал их и обменял на сеульские.
|
||||
Брат так не поступил. Тэхён — да, и от этого тошно. Но на тот момент решения за него принимали другие.
|
||||
Губы растягиваются в нежной и слабой улыбке, а рука тянется к ручке двери, которую он через пару секунд осмеливается открыть. Свои светлые глаза останавливает на уже виднеющейся фигуре. Парень, что старше Тэхёна на восемь лет, стоит со скрещёнными на груди руками, улыбаясь уголком губ и разглядывая лицо своего младшего брата. Омега закрывает за собой дверь и поправляет ремешок от фотоаппарата, что висит у него на шее. Смотрят друг на друга и лишь улыбаются широко, не веря собственным сердцам, которые сообщают им, что вновь на этой территории они вместе. Тэхён всё ещё чувствует себя во сне. Он так желал этого. Сотни раз парень просился на родную землю и столько же раз ему отказывали, что вскоре омега начал сомневаться в возможности возвращения домой.
|
||||
— Джухёк... — на выдохе произносит.
|
||||
Тэхён закидывает фотоаппарат на спину и подбегает к брату первым, врезаясь в него. Альфа хрипло смеётся и все силы вкладывает в объятия, заодно целуя в пепельную макушку со всей своей любовью к этому человеку. Омега рядом с ним совсем крохотный, как это было в детстве. Нисколько не изменился. Вечно на носочки встаёт, когда пытается обнять Джухёка, который умиляется и поглаживает ладонью спину. Тэхён ярко улыбается, когда альфа легко поднимает его с земли и сжимает крепко в руках, оставляя короткие поцелуи на плече. Омега слегка отстраняется и смотрит на него, излучая одно тепло и искреннее счастье, которого старшему Киму так не хватало шесть месяцев.
|
||||
Полгода в разлуке. Полгода в мучениях друг без друга находились.
|
||||
— Тэхён, — наконец-то слышит его голос омега. Джухёк опускает парня на землю и целует в лоб. — Ангел, — младший поднимает на него глаза и морщит нос, улыбаясь.
|
||||
Так нежен и ласков с ним бывает мужчина.
|
||||
— Я ужасно ждал этой поездки.
|
||||
— Мне кажется, я вряд ли найду силы, чтобы вновь отпустить тебя.
|
||||
Омега хитро смеётся и делает шаг в сторону, чтобы увидеть стоящий маленький, но красивый и аккуратный дом.
|
||||
— И не ищи, — отвечает Тэхён, взглянув на брата. — Вдруг я больше не вернусь в Сеул, Джухёк? — хмыкает и оборачивается, замечая таксиста с двумя яркими чемоданами, принадлежащими Тэхёну.
|
||||
Старший Ким окидывает младшего подозрительным взглядом, после чего подходит к водителю чёрного джипа и берёт у него чемоданы, тихо поблагодарив. Тэхён со своего места кивает таксисту и улыбается, благодаря. Омега снова поворачивается к родному дому, отчего в уголках медовых глаз собираются слёзы. Всем телом расслабляется и вбирает в легкие тёплый воздух, оглядывая дом перед собой. Он-то точно поменялся за четыре года, пока Тэхёна здесь не было. Стал красивее, хотя и раньше был таким, но сейчас в нём чётко заметны изменения снаружи, видимо, и внутри всё стало по-другому. Старший брат определённо хорошо постарался улучшить здесь всё. И дело касается не только лишь их очага, но и соседних домов.
|
||||
Немалые карманные деньги Тэхёна точно пошли на пользу. Не зря он их тайно перечислял Джухёку.
|
||||
— В каком смысле не вернешься обратно? — серьёзно спрашивает альфа, когда подходит ближе.
|
||||
— Просто мечтаю… — прикусывая губу.
|
||||
— Мечтаешь?
|
||||
— А ты запрещаешь? — весело хмыкая, забирает у брата чемодан и уходит к дому.
|
||||
Мужчина щурит глаза и смотрит внимательно на отдаляющуюся спину Тэхёна, задумываясь и идя вскоре за ним. Омега первым входит в дом, затаивая дыхание и поджимая до легкой боли губы. Джухёк же не торопится, поглядывает на младшего и почему-то переживает из-за его реакции. Тот осторожно ступает по новому деревянному полу и очень медленно оглядывается по сторонам, заинтересованно хлопая чёрными ресницами.
|
||||
Четыре года…
|
||||
Тэхён правда уже потерял надежду, что вернется опять в этот дом. Одна его сторона просилась обратно, вторая — боялась. Раньше они жили вчетвером, сейчас их только двое.
|
||||
Джухёк закрывает двери за собой, ни на секунду не отводя от брата глаз. Полностью на нём сосредотачивается. Ему важно знать, что Тэхёну до сих пор приятно здесь находиться, независимо от некоторых изменений. Толком ничего не поменялось: стало красивее и чище. Джухёк очень постарался навести порядок в своём доме, окончательно погрузился в это дело. Отвлекался физическим трудом, не хотел подпускать к себе боль и грусть после того, как остался совсем один в Южной Африке. После того, как родной дед забрал младшего брата к себе в Сеул.
|
||||
Отец папы рассчитывал, что четырнадцатилетнему подростку будет в Корее намного лучше, нежели в Ботсване. Там молодой омега попытался бы думать о других вещах, уделил бы время различным творческим занятиям, так как в Сеуле есть такая возможность, в Ботсване — нет. Тэхён так и поступил, точнее, просто послушался деда и пошёл в школу, которая была забита учениками, в отличие от африканских школ. В школе на родине не было настолько много детей, и половины даже. Поэтому поначалу Тэхён был очень скован рядом со сверстниками: привыкал к таким большим изменениям довольно долго, порой и боялся находиться в настолько больших компаниях. Они не были похожи на жителей Ботсваны. Абсолютно разные люди: у них другой образ жизни, отличные взгляды и странное поведение.
|
||||
Но в какой-то момент Тэхён понял, что это у него просто другое сердце.
|
||||
Полгода был очень тихим. По ночам под одеялом плакал, дрожал всем телом и шевелил мокрыми персиковыми губами, просясь к брату. Дед пытался забрать к себе и Джухёка, но альфа категорически отказывался от подобного предложения. На тот момент ему было двадцать два года, и он вправе был решать сам, что для него лучше. Дед не стал настаивать, лишь предупредил, что обязательно будет помогать ему с деньгами. А Джухёк временами прилетал в Сеул только ради Тэхёна. И единственно в эти периоды младший брат поистине чувствовал себя хорошо, словно ничего ужасного не произошло в его короткой жизни.
|
||||
— Красиво, — с улыбкой проговаривает Тэхён, посмотрев на альфу.
|
||||
Старший издает тихий смешок и оставляет чемоданы у стены, подходя ближе к омеге.
|
||||
— Я рад, что ты так считаешь.
|
||||
— Тут по-прежнему тот же уют, что и раньше, — очарованно вздыхает, продолжая осматриваться. — Всё та же теплая атмосфера…
|
||||
В Сеуле такого тепла не было.
|
||||
— Боялся, что тебе не понравится, — говорит Джухёк. — Я пытался особо ничего не менять, дабы не лишить этот дом прошлого.
|
||||
От его слов Тэхёну теплее становится.
|
||||
— Ты правда сохранил прошлое в этом маленьком волшебном доме.
|
||||
— Наши воспоминания отсюда не исчезнут.
|
||||
Младший Ким поворачивает голову в сторону мягкого кремового дивана, обращает внимание на маленький стеклянный столик рядом с ним. Долго оглядывать его не приходится, быстро замечает свою собственную фотографию в небольшой рамке. Это селфи, и брат действительно распечатал его, наградив рамкой и поставив на видное место. Тэхён на фотографии широко улыбается, ведь он тогда сфотографировался именно для Джухёка, который задыхался без него в Ботсване, а омега быстро включил фронтальную камеру и улучшил настроение брата своей улыбкой.
|
||||
— Джухёк, — альфа вопросительно мычит, смотря на Тэхёна, подошедшего медленным шагом к дивану и удерживающего взгляд на фото в рамке. — Я хочу остаться, — со страхом произносит, опасаясь реакции старшего. — Меня не тянет обратно в Сеул, — прикусывает до боли губу и глядит на брата.
|
||||
Альфа вздыхает и подходит к нему, взяв ангельское лицо в свои большие ладони и начав рассматривать каждый миллиметр. Такой бледный. Кожа светлая, не такая, как раньше.
|
||||
Корея отняла у него одну из его изюминок. Несколько лет назад цвет был смуглым, загорелым из-за жаркого африканского солнца, но стоило ему отправиться на другой континент, так сразу побледнел. Но всё равно не прекратил блистать красотой. Черты его лица уникальные, необычные, в какой-то степени грубые. Джухёку никогда не надоест повторять брату, насколько он красив, а тот так и продолжит стесняться и пинать его кулаками, чтобы альфа прекратил. Джухёк слишком нежен и добр к нему, но также и строг, как настоящий старший брат.
|
||||
Только сейчас хочется действительно с ним поспорить и настоять на своем желании.
|
||||
— Сколько раз нам ещё поднимать эту тему, Тэхён? — спрашивает Джухёк, оглаживая большим пальцем скулу омеги.
|
||||
— Пока ты не согласишься…
|
||||
— Прекрати, — чуть жёстче.
|
||||
Тэхён жует губы и смотрит ему прямо в глаза, после чего альфа отстраняется и садится на диван.
|
||||
Старший Ким не принимает ярое настоящее желание брата остаться дома. Это невыносимо.
|
||||
Невыносимо жить там, где сердце не лежит.
|
||||
— Джухёк… — с мольбой шепчет, присаживаясь рядом.
|
||||
— Я много раз говорил тебе ответ, — спокойно произносит альфа.
|
||||
— И каждый раз он мне не нравится.
|
||||
— Но он не поменяется, — резко бросает, несильно поджав губы.
|
||||
Тэхён тянется к брату и кладёт голову на его грудь, поднимая ноги на диван. Сворачивается, как клубочек.
|
||||
— Ты несправедлив ко мне, — хмуро смотрит на альфу, слабо обнимая его.
|
||||
Он всё время отказывает Тэхёну в просьбе остаться. Омега третий год умоляет, но нужных слов так и не получает. Джухёк мрачнеет, когда слышит от него подобные слова, меняет тон голоса и буквально ломает маленькие мечты Тэхёна. Тот до сих пор удивлен, что альфа разрешил ему прилететь хотя бы на некоторое время на Родину, дабы отдохнуть и отвлечься от учёбы. Омега очень усердно старался: рыдал в трубку, как ненормальный, и кричал на брата, пытаясь донести, насколько же сильно скучает по нему. Всё лицо у него тогда от слёз опухло так, что Джухёк, увидев его таким разочарованным на экране своего телефона, через пару дней решил просто сдаться и позволил посетить Южную Африку спустя четыре года.
|
||||
— Это ты несправедлив к себе, — говорит Джухёк и смотрит прямо в медовые глаза. — У тебя здесь нет будущего, поэтому лучше думай о своей учёбе, которую я тебе ни за что не позволю бросить, — Тэхён от подобного тона немного сжимается. — Приехал ты сюда отдохнуть и обязательно вернешься обратно.
|
||||
Омега каждой живой клеткой своего организма не желает улетать в Корею. Он живёт там с дедом в огромном особняке, и, наверное, любой житель Африки мечтал бы оказаться в подобном месте, но только не Тэхён. Любит своего деда, но сердце определенно тянет в Ботсвану. Здесь ему куда комфортнее и теплее во всех смыслах. Не только душа долго привыкала к новой обстановке, но и само тело. Из-за смены климата Тэхён часто болел и сидел дома с простудой и жуткой болью в костях.
|
||||
— Я мог бы летать в Сеул только на экзамены, а занимался бы круглосуточно тут… — с очередным беспокойством произносит, уже понимая, что это альфе не понравится.
|
||||
Джухёк кидает на него злобный взгляд, угрожая суженными зрачками и очерчивая скулы. Омега поджимает губы и всё равно не отстраняется от брата, только крепче обнимает его и слегка хмурит брови, зная об очередном отказе.
|
||||
Тэхён пошёл рано в африканскую школу, поэтому и корейскую закончил в семнадцать лет, из-за чего был самым младшим в классе. И сейчас, находясь на первом курсе журналистики, омега так и остаётся самым мелким парнишкой среди своих одногруппников. Это нестрашно, так как Тэхён попытался найти общий язык с ребятами, хотел влиться в их коллектив, и это действительно удалось сделать за пару месяцев. Отношения настолько хорошо между ними сложилось, что некоторые из ребят, в том числе и сам Тэхён, договорились слетать в Пекин в ноябре. И когда поездка была уже на носу, Ким услышал долгожданные слова от старшего брата, который обрадовал его тем, что омега может прилететь на время в Ботсвану. Тэхён и минуты не уделил размышлениям и сразу выбрал Южную Африку, выкинув из головы Китай.
|
||||
— Нет, — целует в лоб младшего альфа.
|
||||
— Противный ты, Джухёк, — фыркает Тэхён, закатывая глаза и потираясь головой о чужую грудь.
|
||||
Тот хрипло смеётся.
|
||||
— Противный?
|
||||
— Верно, — сразу подтверждает. — Не хочу оставлять тебя здесь одного, — вздыхает, прикрывая веки. — Я должен находиться в Ботсване.
|
||||
Родителей рядом нет четыре года, и они вдвоём обязаны жить вместе, а не быть раскинутыми по разным континентам.
|
||||
— Ботсвана уже не та, ангел, — обнимает младшего брата.
|
||||
Тэхён не понимает и поднимает на Джухёка вопросительный взгляд. Но вместо ответа альфа лишь дергает уголком губ и касается костяшками пальцев его щеки.
|
||||
Это движение быстро отгоняет от парня плохие мысли о доме.
|
@ -1,52 +0,0 @@
|
||||
## Задание
|
||||
Работа с типовыми наборами данных и различными моделями.
|
||||
Сгенерируйте определенный тип данных и сравните на нем 3 модели
|
||||
|
||||
Вариант №2
|
||||
|
||||
Данные: make_circles(noise=0.2, factor=0.5, random_state=1)
|
||||
|
||||
Модели:
|
||||
+ Линейная регрессия
|
||||
+ Полиномиальная регрессия (degree=3)
|
||||
+ Гребневая рекрессия (degree=3, alpha=1.0)
|
||||
|
||||
## Используемые технологии
|
||||
В лабораторной были использованы библиотеки:
|
||||
+ matplotlib - используется для создания графиков
|
||||
+ sklearn - используется для работы с моделями машинного обучения
|
||||
|
||||
## Как запустить
|
||||
Запустить файл main.py, который выполнит необходимые действия над моделями
|
||||
и выведет графики на экран.
|
||||
|
||||
## Что делает программа
|
||||
Генерирует набор данных типа circles, делит его на обучающую и тестовую выборки.
|
||||
По очереди обучает на данных обучающей выборки 3 модели:
|
||||
модель линейной регрессии, модель полиномиальной регрессии со степенью 3 и
|
||||
модель гребневой регрессии со степенью 3 и alpha=1.0.
|
||||
|
||||
После обучения предсказания моделей проверяются на тестовых данных.
|
||||
Строится 4 графика, один для отображения первоначальных тестовых и обучающих данных, где:
|
||||
`o` - точки обучающей выборки первого и второго типа.
|
||||
`x` - точки тестовой выборки первого и второго типа.
|
||||
И по одному графику для каждой модели, где:
|
||||
`o` - точки тестовой выборки первого и второго типа.
|
||||
|
||||
Далее программа выведет оценки точности моделей. Полученные оценки:
|
||||
+ Линейная регрессия - 0.268
|
||||
+ Полиномиальная регрессия со степенью 3 - 0.134
|
||||
+ Гребневая регрессия со степенью 3, alpha=1.0 - 0.131
|
||||
|
||||
## Скриншоты работы программы
|
||||
График для отображения первоначальных тестовых и обучающих данных и
|
||||
полученные графики разбиения точек на классы:
|
||||
|
||||
Линейная регрессия - Полиномиальная регрессия (со степенью 3) - Гребневая регрессия (со степенью 3, alpha=1.0)
|
||||
![img.png](img_screen_1.png)
|
||||
|
||||
Вывод анализа точности работы моделей:
|
||||
![img.png](img_screen_2.png)
|
||||
|
||||
## Вывод
|
||||
Исходя из этого, можно сделать вывод: лучший результат показала модель линейной регрессии.
|
Before Width: | Height: | Size: 332 KiB |
Before Width: | Height: | Size: 64 KiB |
@ -1,87 +0,0 @@
|
||||
from matplotlib import pyplot as plt
|
||||
from matplotlib.colors import ListedColormap
|
||||
from sklearn.datasets import make_circles
|
||||
from sklearn.linear_model import LinearRegression, Ridge
|
||||
from sklearn.metrics import mean_squared_error
|
||||
from sklearn.model_selection import train_test_split
|
||||
from sklearn.pipeline import make_pipeline
|
||||
from sklearn.preprocessing import PolynomialFeatures, StandardScaler
|
||||
|
||||
# Нелинейный генератор - позволяет сгенерировать такие классы-признаки,
|
||||
# что признаки одного класса геометрически окружают признаки другого класса
|
||||
X, y = make_circles(noise=0.2, factor=0.5, random_state=1)
|
||||
X = StandardScaler().fit_transform(X)
|
||||
|
||||
# Разделение на обучающую и тестовую выборки (40% данных будет использовано для тестов)
|
||||
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.4, random_state=42)
|
||||
|
||||
# Создание необходимых для оценки моделей
|
||||
def models():
|
||||
# Линейная регрессия
|
||||
linear_regression = LinearRegression()
|
||||
linear_regression.fit(X_train, y_train)
|
||||
|
||||
# Полиномиальная регрессия (degree=3)
|
||||
poly_regression = make_pipeline(PolynomialFeatures(degree=3), LinearRegression())
|
||||
poly_regression.fit(X_train, y_train)
|
||||
|
||||
# Гребневая рекрессия (degree=3, alpha=1.0)
|
||||
ridge_regression = make_pipeline(PolynomialFeatures(degree=3), Ridge(alpha=1.0))
|
||||
ridge_regression.fit(X_train, y_train)
|
||||
|
||||
models = [linear_regression, poly_regression, ridge_regression]
|
||||
|
||||
# Предсказанные y
|
||||
linear_predict = linear_regression.predict(X_test)
|
||||
poly_predict = poly_regression.predict(X_test)
|
||||
ridge_predict = ridge_regression.predict(X_test)
|
||||
|
||||
pred = [linear_predict, poly_predict, ridge_predict]
|
||||
|
||||
# Среднеквадратичные ошибки
|
||||
lin_mse = mean_squared_error(y_test, linear_predict)
|
||||
poly_mse = mean_squared_error(y_test, poly_predict)
|
||||
rr_mse = mean_squared_error(y_test, ridge_predict)
|
||||
|
||||
mse = [lin_mse, poly_mse, rr_mse]
|
||||
|
||||
grafics(pred, mse, models)
|
||||
|
||||
# Графики
|
||||
def grafics(pred, mse, models):
|
||||
fig, ax = plt.subplots(nrows=2, ncols=2, figsize=(8, 8))
|
||||
cm_color1 = ListedColormap(['r', 'g'])
|
||||
|
||||
plt.suptitle('Лабораторная работа 1. Вариант 2.', fontweight='bold')
|
||||
|
||||
# График данных
|
||||
plt.subplot(2, 2, 1)
|
||||
plt.scatter(X_train[:, 0], X_train[:, 1], c=y_train, cmap=cm_color1, marker='o', label='тренировочные данные')
|
||||
plt.scatter(X_test[:, 0], X_test[:, 1], c=y_test, cmap=cm_color1, marker='x', label='тестовые данные')
|
||||
plt.title('Датасет circles', fontsize=10, loc='left')
|
||||
plt.legend(loc='upper left')
|
||||
|
||||
# График линейной модели
|
||||
plt.subplot(2, 2, 2)
|
||||
plt.scatter(X_test[:, 0], X_test[:, 1], c=pred[0], cmap=cm_color1)
|
||||
plt.title('Линейная регрессия', fontsize=10, loc='left')
|
||||
|
||||
# График полиномиальной модели (degree=3)
|
||||
plt.subplot(2, 2, 3)
|
||||
plt.scatter(X_test[:, 0], X_test[:, 1], c=pred[1], cmap=cm_color1)
|
||||
plt.title('Полиномиальная регрессия (degree=3)', fontsize=10, loc='left')
|
||||
plt.xlabel('X')
|
||||
plt.ylabel('Y')
|
||||
|
||||
# График гребневой модели (degree=3, alpha=1.0)
|
||||
plt.subplot(2, 2, 4)
|
||||
plt.scatter(X_test[:, 0], X_test[:, 1], c=pred[2], cmap=cm_color1)
|
||||
plt.title('Гребневая регрессия (degree=3, alpha=1.0)', fontsize=10, loc='left')
|
||||
plt.show()
|
||||
|
||||
# Сравнение качества
|
||||
print('Линейная MSE:', mse[0])
|
||||
print('Полиномиальная (degree=3) MSE:', mse[1])
|
||||
print('Гребневая (degree=3, alpha=1.0) MSE:', mse[2])
|
||||
|
||||
models()
|
@ -1,50 +0,0 @@
|
||||
## Лабораторная работа №2
|
||||
|
||||
### Ранжирование признаков
|
||||
|
||||
Вариант №2
|
||||
|
||||
## Задание:
|
||||
|
||||
Используя код из [1] (пункт «Решение задачи ранжирования признаков», стр. 205),
|
||||
выполните ранжирование признаков с помощью указанных по варианту моделей.
|
||||
Отобразите получившиеся значения\оценки каждого признака каждым методом\моделью и среднюю оценку.
|
||||
Проведите анализ получившихся результатов.
|
||||
Какие четыре признака оказались самыми важными по среднему значению?
|
||||
(Названия\индексы признаков и будут ответом на задание).
|
||||
|
||||
Модели:
|
||||
+ Линейная регрессия (LinearRegression)
|
||||
+ Рекурсивное сокращение признаков (Recursive Feature Elimination –RFE),
|
||||
+ Сокращение признаков Случайными деревьями (Random Forest Regressor)
|
||||
|
||||
### Какие технологии использовались:
|
||||
|
||||
Используемые библиотеки:
|
||||
* numpy
|
||||
* pandas
|
||||
* sklearn
|
||||
|
||||
### Как запустить:
|
||||
|
||||
* установить python, numpy, pandas, sklearn
|
||||
* запустить проект (стартовая точка - main.py)
|
||||
|
||||
### Что делает программа:
|
||||
|
||||
* Генерирует данные и обучает модели: LinearRegression, Recursive Feature Elimination (RFE), Random Forest Regressor
|
||||
* Производится ранжирование признаков с помощью моделей
|
||||
* Отображение получившихся результатов: значения признаков для каждой модели и 4 самых важных признака по среднему значению
|
||||
|
||||
### 4 самых важных признака по среднему значению
|
||||
* Признак №1 : 0.887
|
||||
* Признак №4 : 0.821
|
||||
* Признак №2 : 0.741
|
||||
* Признак №11 : 0.600
|
||||
|
||||
#### Результаты работы программы:
|
||||
|
||||
![Result1](img_result_1.png)
|
||||
![Result2](img_result_2.png)
|
||||
![Result3](img_result_3.png)
|
||||
![Result4](img_result_4.png)
|
Before Width: | Height: | Size: 148 KiB |
Before Width: | Height: | Size: 146 KiB |
Before Width: | Height: | Size: 155 KiB |
Before Width: | Height: | Size: 66 KiB |
@ -1,84 +0,0 @@
|
||||
import numpy as np
|
||||
import pandas as pd
|
||||
from sklearn.linear_model import LinearRegression
|
||||
from sklearn.feature_selection import RFE
|
||||
from sklearn.ensemble import RandomForestRegressor
|
||||
from sklearn.preprocessing import MinMaxScaler
|
||||
|
||||
# Используя код из [1](пункт «Решение задачи ранжирования признаков», стр. 205),
|
||||
# выполните ранжирование признаков с помощью указанных по варианту моделей.
|
||||
# Отобразите получившиеся значения\оценки каждого признака каждым методом\моделью и среднюю оценку.
|
||||
# Проведите анализ получившихся результатов.
|
||||
# Какие четыре признака оказались самыми важными по среднему значению?
|
||||
# (Названия\индексы признаков и будут ответом на задание).
|
||||
|
||||
# Линейная регрессия (LinearRegression)
|
||||
# Рекурсивное сокращение признаков (Recursive Feature Elimination –RFE),
|
||||
# Сокращение признаков Случайными деревьями (Random Forest Regressor)
|
||||
|
||||
# Модели
|
||||
model_LR = LinearRegression()
|
||||
model_RFE = RFE(LinearRegression(), n_features_to_select=1)
|
||||
model_RFR = RandomForestRegressor()
|
||||
|
||||
# Оценки моделей
|
||||
model_scores = {}
|
||||
|
||||
# Cлучайные данные для регрессии
|
||||
def generation_data_and_start():
|
||||
np.random.seed(0)
|
||||
size = 750
|
||||
X_ = np.random.uniform(0, 1, (size, 14))
|
||||
y_ = (10 * np.sin(np.pi * X_[:, 0] * X_[:, 1]) + 20 * (X_[:, 2] - .5) ** 2 +
|
||||
10 * X_[:, 3] + 5 * X_[:, 4] ** 5 + np.random.normal(0, 1))
|
||||
X_[:, 10:] = X_[:, :4] + np.random.normal(0, .025, (size, 4))
|
||||
|
||||
# DataFrame для данных
|
||||
data = pd.DataFrame(X_)
|
||||
data['y'] = y_
|
||||
|
||||
models_study_and_scores(data.drop('y', axis=1), data['y'])
|
||||
print_scores()
|
||||
|
||||
# Обучение и оценка моделей
|
||||
def models_study_and_scores(X, y):
|
||||
|
||||
# Линейная регрессия
|
||||
model_LR.fit(X, y)
|
||||
# Нормализация коэффициентов признаков
|
||||
norm_coef = MinMaxScaler().fit_transform(np.abs(model_LR.coef_).reshape(-1, 1))
|
||||
model_scores["Линейная регрессия"] = norm_coef.flatten()
|
||||
|
||||
# Рекурсивное сокращение признаков
|
||||
model_RFE.fit(X, y)
|
||||
# Нормализация рангов
|
||||
norm_rank = 1 - (model_RFE.ranking_ - 1) / (np.max(model_RFE.ranking_) - 1)
|
||||
model_scores["Рекурсивное сокращение признаков"] = norm_rank
|
||||
|
||||
# Сокращение признаков Случайными деревьями
|
||||
model_RFR.fit(X, y)
|
||||
# Нормализация значений важности признаков
|
||||
norm_imp = MinMaxScaler().fit_transform(model_RFR.feature_importances_.reshape(-1, 1))
|
||||
model_scores["Сокращение признаков Случайными деревьями"] = norm_imp.flatten()
|
||||
|
||||
# Вывод оценок
|
||||
def print_scores():
|
||||
print()
|
||||
print(f"---- Оценки признаков ----")
|
||||
print()
|
||||
for name, scores in model_scores.items():
|
||||
print(f"{name}:")
|
||||
for feature, score in enumerate(scores, start=1):
|
||||
print(f"Признак №{feature}: {score:.3f}")
|
||||
print(f"Средняя оценка признаков: {np.mean(scores):.3f}")
|
||||
print()
|
||||
|
||||
# 4 наиболее важных признака по среднему значению
|
||||
scores = np.mean(list(model_scores.values()), axis=0)
|
||||
sorted_f = sorted(enumerate(scores, start=1), key=lambda x: x[1], reverse=True)
|
||||
imp_features = sorted_f[:4]
|
||||
print("Четыре наиболее важных признака:")
|
||||
for f, score in imp_features:
|
||||
print(f"Признак №{f}: {score:.3f}")
|
||||
|
||||
generation_data_and_start()
|
@ -1,83 +0,0 @@
|
||||
## Лабораторная работа №3
|
||||
|
||||
### Деревья решений
|
||||
|
||||
## Задание:
|
||||
|
||||
+ Задача регресcии: предсказание общего объема выбросов СО2 (Total) страной (Country) за определённый год (Year).
|
||||
|
||||
+ Задача классификации: предсказание процента выбросов СО2 от добычи нефти (procent oil) страной (Country)
|
||||
с учётом общего объёма выбросов (Total) за определённый год (Year)
|
||||
(или: какая часть выбросов придётся на добычу нефти).
|
||||
|
||||
## Данные:
|
||||
|
||||
Этот набор данных обеспечивает углубленный анализ глобальных выбросов CO2 на уровне страны, позволяя лучше понять,
|
||||
какой вклад каждая страна вносит в глобальное совокупное воздействие человека на климат.
|
||||
Он содержит информацию об общих выбросах, а также от добычи и сжигания угля, нефти, газа, цемента и других источников.
|
||||
Данные также дают разбивку выбросов CO2 на душу населения по странам, показывая,
|
||||
какие страны лидируют по уровням загрязнения, и определяют потенциальные области,
|
||||
где следует сосредоточить усилия по сокращению выбросов.
|
||||
Этот набор данных необходим всем, кто хочет получить информацию о своем воздействии на окружающую среду
|
||||
или провести исследование тенденций международного развития.
|
||||
|
||||
Данные организованы с использованием следующих столбцов:
|
||||
|
||||
+ Country: название страны
|
||||
+ ISO 3166-1 alpha-3: трехбуквенный код страны
|
||||
+ Year: год данных исследования
|
||||
+ Total: общее количество CO2, выброшенный страной в этом году
|
||||
+ Coal: количество CO2, выброшенное углем в этом году
|
||||
+ Oil: количество выбросов нефти
|
||||
+ Gas: количество выбросов газа
|
||||
+ Cement: количество выбросов цемента
|
||||
+ Flaring: сжигание на факелах уровни выбросов
|
||||
+ Other: другие формы, такие как промышленные процессы
|
||||
+ Per Capita: столбец «на душу населения»
|
||||
|
||||
|
||||
### Какие технологии использовались:
|
||||
|
||||
Используемые библиотеки:
|
||||
* math
|
||||
* pandas
|
||||
* sklearn
|
||||
|
||||
### Как запустить:
|
||||
|
||||
* установить python, math, pandas, sklearn
|
||||
* запустить проект (стартовая точка - main.py)
|
||||
|
||||
### Что делает программа:
|
||||
|
||||
* Загружает набор данных из файла 'CO2.csv', который содержит информацию о выбросах странами CO2 в год от различной промышленной деятельности.
|
||||
* Очищает набор данных путём удаления строк с нулевыми значениями из набора.
|
||||
* Добавляет в набор столбец с хеш-кодом наименования страны.
|
||||
* Добавляет в набор столбец 'procent oil' - процент выбросов от добычи нефтепродуктов от общего объема выбросов страны за год (для возможности классификации).
|
||||
* Выбирает набор признаков (features) из данных, которые будут использоваться для обучения моделей регрессии и классификации.
|
||||
* Определяет задачу регрессии, где целевой переменной (task) является 'Total', и задачу классификации, где целевой переменной является 'procent oil'.
|
||||
* Делит данные на обучающий и тестовый наборы для обеих задач с использованием функции train_test_split. Тестовый набор составляет 1% от исходных данных.
|
||||
* Создает и обучает деревья решений для регрессии и классификации с использованием моделей DecisionTreeRegressor и DecisionTreeClassifier.
|
||||
* Предсказывает значения целевой переменной на тестовых наборах для обеих задач.
|
||||
* Оценивает качество моделей с помощью оценки точности (score) для регрессии и классификации.
|
||||
* Выводит важности признаков для обеих задач.
|
||||
|
||||
|
||||
#### Результаты работы программы:
|
||||
|
||||
![Result](img.png)
|
||||
|
||||
### Вывод:
|
||||
|
||||
Для задачи регрессии, где целью было предсказание общего объема выбросов СО2 страной за определённый год, модель дерева решений показала оценку точности равную 0.99. Это очень хороший показатель, значит модель вполне приемлемо предсказывает объём выбросов определенной страной в определенный год.
|
||||
|
||||
Для задачи классификации, где целью было предсказать какая часть выбросов придётся на добычу нефти, модель дерева решений показала более низкую точность - 18%. Это означает, что модель классификации не справляется с предсказанием доли выбросов от добычи нефтепродуктов на основе выбранных признаков.
|
||||
Низкая точность указывает на необходимость улучшения модели или выбора других методов для решения задачи классификации.
|
||||
|
||||
Анализ важности признаков для задачи регрессии показал, что наибольший вклад в предсказание объёма выбросов страной за год вносит признак 'hashcode' или 'Country'.
|
||||
Наименование страны оказывает наибольшее влияние на результаты модели.
|
||||
Из этого можно сделать вывод, что количество выбросов CO2 определённой страной не сильно изменяется с течением времени
|
||||
и каждая страна ежегодно производит примерно одинаковый объём выбросов CO2, что может быть связано с наличием месторождений ископаемых.
|
||||
|
||||
Для задачи классификации наибольший вклад в предсказание стоимости жилья вносят признаки 'Year' и 'Total'.
|
||||
Эти признаки имеют наибольшее значение при определении классов по объёму выбросов от добычи нефтепродуктов.
|
Before Width: | Height: | Size: 173 KiB |
@ -1,96 +0,0 @@
|
||||
import math
|
||||
import pandas as pd
|
||||
from sklearn.tree import DecisionTreeClassifier, DecisionTreeRegressor
|
||||
from sklearn.model_selection import train_test_split
|
||||
|
||||
### Деревья решений для регрессии и классификации
|
||||
### с использованием моделей DecisionTreeRegressor и DecisionTreeClassifier
|
||||
|
||||
# Загрузка данных
|
||||
data = pd.read_csv('CO2.csv')
|
||||
data = data.dropna()
|
||||
|
||||
# Хеширование наименований стран
|
||||
countries = {}
|
||||
for country in data['Country']:
|
||||
countries[country] = hash(country)
|
||||
hash_column = []
|
||||
for country in data['Country']:
|
||||
hash_column.append(countries[country])
|
||||
data.insert(loc=0, column='hashcode', value=hash_column)
|
||||
|
||||
# Добавление колонки "процент выбросов от добычи нефти в стране за год" для классификации
|
||||
procent_oil = []
|
||||
oils = []
|
||||
totals = []
|
||||
for oil in data['Oil']:
|
||||
oils.append(oil)
|
||||
for total in data['Total']:
|
||||
totals.append(total)
|
||||
for i in range(len(oils)):
|
||||
procent_oil.append(math.ceil(oils[i]/totals[i]*100))
|
||||
data.insert(loc=0, column='procent oil', value=procent_oil)
|
||||
|
||||
#------ Дерево решений для регрессии ------#
|
||||
|
||||
# ЗАДАЧА: предсказание общего объема выбросов СО2 страной за определённый год.
|
||||
|
||||
# Необходимые признаки для дерева регрессии
|
||||
features_for_regr = data[['Year', 'hashcode']]
|
||||
# Задача дерева регрессии
|
||||
task_regr = data['Total']
|
||||
|
||||
# Разделение данных на обучающий и тестовый наборы для регрессии
|
||||
X_train_r, X_test_r, \
|
||||
y_train_r, y_test_r = train_test_split(features_for_regr, task_regr, test_size=0.01, random_state=250)
|
||||
|
||||
# Создание и обучение дерева решений для регрессии
|
||||
model_regr = DecisionTreeRegressor(random_state=250)
|
||||
model_regr.fit(X_train_r, y_train_r)
|
||||
|
||||
# Предсказание на тестовом наборе для регрессии
|
||||
y_pred_r = model_regr.predict(X_test_r)
|
||||
|
||||
# Точечная оценка модели
|
||||
score_r = model_regr.score(X_test_r, y_test_r)
|
||||
print("\n\nТочность дерева регрессии:", score_r)
|
||||
|
||||
# Важности признаков для дерева регрессии
|
||||
imp_regr = model_regr.feature_importances_
|
||||
|
||||
print("Важность признаков для дерева регрессии: ")
|
||||
print("Важность 'Year':", imp_regr[0])
|
||||
print("Важность 'hashcode':", imp_regr[1], "\n\n")
|
||||
|
||||
#------ Дерево решений для классификации ------#
|
||||
|
||||
# ЗАДАЧА: предсказание процента выбросов СО2 от добычи нефти страной за определённый год
|
||||
# с учётом общего объёма выбросов за год (или: какая часть выбросов придётся на добычу нефти).
|
||||
|
||||
# Необходимые признаки для дерева классификации
|
||||
features_for_class = data[['Total', 'Year', 'hashcode']]
|
||||
# Задача дерева классификации
|
||||
task_class = data['procent oil']
|
||||
|
||||
# Разделение данных на обучающий и тестовый наборы для классификации
|
||||
X_train_c, X_test_c, \
|
||||
y_train_c, y_test_c = train_test_split(features_for_class, task_class, test_size=0.01, random_state=250)
|
||||
|
||||
# Создание и обучение дерева решений для классификации
|
||||
model_class = DecisionTreeClassifier(random_state=250)
|
||||
model_class.fit(X_train_c, y_train_c)
|
||||
|
||||
# Предсказание на тестовом наборе для классификации
|
||||
y_pred_c = model_class.predict(X_test_c)
|
||||
|
||||
# Точечная оценка модели
|
||||
score_c = model_class.score(X_test_c, y_test_c)
|
||||
print("Точность дерева классификации:", score_c)
|
||||
|
||||
# Важности признаков для дерева классификации
|
||||
imp_class = model_class.feature_importances_
|
||||
|
||||
print("Важность признаков для дерева классификации: ")
|
||||
print("Важность 'Total':", imp_class[0])
|
||||
print("Важность 'Year':", imp_class[1])
|
||||
print("Важность 'hashcode':", imp_class[2])
|
@ -1,112 +0,0 @@
|
||||
# Лабораторная работа №4
|
||||
|
||||
## Кластеризация
|
||||
|
||||
#### ПИбд-41 Арзамаскина Милана
|
||||
#### Вариант №2 (2 % 5 = 2)
|
||||
|
||||
## Задание:
|
||||
|
||||
Использовать метод кластеризации по варианту для данных из таблицы 1 по варианту (таблица 9),
|
||||
самостоятельно сформулировав задачу.
|
||||
Интерпретировать результаты и оценить, насколько хорошо он подходит для решения сформулированной вами задачи.
|
||||
|
||||
#### Формулировка задачи:
|
||||
Группировка стран на основе их характеристик:
|
||||
количество выбросов от добычи нефтепродуктов, газа, угля в 2020 году.
|
||||
С помощью алгоритма кластеризации: linkage.
|
||||
|
||||
## Данные:
|
||||
|
||||
Этот набор данных обеспечивает углубленный анализ глобальных выбросов CO2 на уровне страны, позволяя лучше понять,
|
||||
какой вклад каждая страна вносит в глобальное совокупное воздействие человека на климат.
|
||||
Он содержит информацию об общих выбросах, а также от добычи и сжигания угля, нефти, газа, цемента и других источников.
|
||||
Данные также дают разбивку выбросов CO2 на душу населения по странам, показывая,
|
||||
какие страны лидируют по уровням загрязнения, и определяют потенциальные области,
|
||||
где следует сосредоточить усилия по сокращению выбросов.
|
||||
Этот набор данных необходим всем, кто хочет получить информацию о своем воздействии на окружающую среду
|
||||
или провести исследование тенденций международного развития.
|
||||
|
||||
Данные организованы с использованием следующих столбцов:
|
||||
|
||||
+ Country: название страны
|
||||
+ ISO 3166-1 alpha-3: трехбуквенный код страны
|
||||
+ Year: год данных исследования
|
||||
+ Total: общее количество CO2, выброшенный страной в этом году
|
||||
+ Coal: количество CO2, выброшенное углем в этом году
|
||||
+ Oil: количество выбросов нефти
|
||||
+ Gas: количество выбросов газа
|
||||
+ Cement: количество выбросов цемента
|
||||
+ Flaring: сжигание на факелах уровни выбросов
|
||||
+ Other: другие формы, такие как промышленные процессы
|
||||
+ Per Capita: столбец «на душу населения»
|
||||
|
||||
|
||||
### Какие технологии использовались:
|
||||
|
||||
Используемые библиотеки:
|
||||
* scipy.cluster.hierarchy
|
||||
* pandas
|
||||
* matplotlib
|
||||
* seaborn
|
||||
|
||||
### Как запустить:
|
||||
|
||||
* установить python, scipy.cluster.hierarchy, pandas, matplotlib, seaborn
|
||||
* запустить проект (стартовая точка - main.py)
|
||||
|
||||
### Что делает программа:
|
||||
|
||||
* Загружает набор данных из файла 'CO2.csv', который содержит информацию о выбросах странами CO2 в год от различной промышленной деятельности.
|
||||
* Очищает набор данных путём удаления строк с нулевыми значениями и глобальными значениями по всем странам (строки 'Global') из набора.
|
||||
* Отбирает данные по странам за 2020 год.
|
||||
* Выбирает набор признаков (features) из данных, которые будут использоваться для кластеризации.
|
||||
* Применяет алгоритм linkage.
|
||||
* Формирует 4 кластера данных с помощью функции fcluster.
|
||||
* Выводит таблицу со списком стран, их характеристиками и номером кластера, к которому они относятся.
|
||||
* Отображает диаграмму результатов кластеризации seaborn.
|
||||
|
||||
|
||||
#### Результаты работы программы:
|
||||
|
||||
![Result](img_1.png)
|
||||
![Result](img.png)
|
||||
|
||||
### Вывод:
|
||||
|
||||
Для кластеризации данных было использовано 4 кластера для группировки стран на основе их характеристик:
|
||||
количество выбросов от добычи нефтепродуктов, газа, угля в 2020 году.
|
||||
На кластеры разбивались 47 стран.
|
||||
|
||||
На диаграмме можно наблюдать, что практически все страны относятся к первому кластеру,
|
||||
а 2, 3, 4 кластер содержит всего по одной стране.
|
||||
|
||||
+ Кластер 1:
|
||||
|
||||
Включает страны с маленьким объёмом выбросов от добычи газа, нефти и угля в 2020 году.
|
||||
В данную группу входят такие страны, как Швейцария, Турция, Норвегия и др.
|
||||
Опираясь на результаты кластеризации, можно сказать, что страны имеют малое количество месторождений газа, нефти и угля,
|
||||
либо не занимаются их добычей, либо ведут мероприятия по смягчению последствий от загрязнений.
|
||||
|
||||
+ Кластер 2:
|
||||
|
||||
Включает одну страну - Россию.
|
||||
По диаграмме можно сказать, что в стране выбросы от добычи нефти и угля также малы, как и в странах первого кластера.
|
||||
Однако, выбросы от добычи газа в несколько раз больше.
|
||||
Страна, которая занимается преимущественно добычей газа.
|
||||
|
||||
+ Кластер 3:
|
||||
|
||||
Содержит также одну страну - США. У страны рекордный объём выбросов от добычи газа, также страна этого кластера
|
||||
отличается бОльшим объемом выбросов от добычи нефти (можно наблюдать на диаграмме по размеру точки).
|
||||
Страна, лидирующая по объёму выбросов от добычи газа. Страна является лидером по запасам природного газа.
|
||||
|
||||
+ Кластер 4:
|
||||
|
||||
Включает страну - Китай. Судя по диаграмме кластеризации Китай производит большой объём выбросов
|
||||
в процессе добычи нефти и рекордный в процессе добычи угля.
|
||||
Страна, лидирующая по выбросам от добычи угля и нефти, а также средняя по выбросам от газа.
|
||||
Опираясь на результаты кластеризации, можно сказать, что Китай - лидер по добыче угля.
|
||||
|
||||
Данная кластеризация на 4 кластера хорошо подходит для распределения стран
|
||||
на группы по объёму выбросов от добычи нефти, газа и угля.
|
Before Width: | Height: | Size: 602 KiB |
Before Width: | Height: | Size: 67 KiB |
@ -1,44 +0,0 @@
|
||||
import pandas as pd
|
||||
from scipy.cluster.hierarchy import linkage, fcluster
|
||||
import matplotlib.pyplot as plt
|
||||
import seaborn as sns
|
||||
|
||||
# Кластеризация: Группировка стран на основе их характеристик:
|
||||
# количество выбросов от добычи нефтепродуктов, газа, угля в 2020 году.
|
||||
|
||||
# Загружаем данные, отбираем данные за 2020 год
|
||||
# и удаляем строки, в которых данные отсутствуют
|
||||
data_first = pd.read_csv('CO2.csv')
|
||||
data_first = data_first.dropna()
|
||||
data = data_first[data_first['Year'] == 2020]
|
||||
data = data[data.Country != 'Global']
|
||||
names = data['Country']
|
||||
|
||||
# Выделение признаков
|
||||
features = data[['Coal', 'Oil', 'Gas']]
|
||||
|
||||
# Применение алгоритма linkage
|
||||
link_cl = linkage(features, method='ward', metric='euclidean')
|
||||
|
||||
# Кластеризация на 3 кластера
|
||||
clusters = fcluster(link_cl, 4, criterion='maxclust')
|
||||
|
||||
# Добавление информации о кластерах в исходные данные
|
||||
features['cluster'] = clusters
|
||||
|
||||
# Диаграмма результатов кластеризации
|
||||
plt.figure(figsize=(12, 6))
|
||||
sns.scatterplot(x='Coal', y='Gas', size='Oil',
|
||||
sizes=(10, 200), hue='cluster', palette='viridis', data=features)
|
||||
plt.title('Clustering Results')
|
||||
plt.xlabel('Coal')
|
||||
plt.ylabel('Gas')
|
||||
|
||||
# Вывод таблицы с результатами кластеризации
|
||||
# Добавление наименований стран
|
||||
features.insert(loc=0, column='country', value=names)
|
||||
# Вывод результатов кластеризации
|
||||
result_clust = features[['cluster', 'country', 'Coal', 'Oil', 'Gas']]
|
||||
print(result_clust)
|
||||
|
||||
plt.show()
|
@ -1,84 +0,0 @@
|
||||
# Лабораторная работа №5
|
||||
|
||||
## Регрессия
|
||||
|
||||
#### ПИбд-41 Арзамаскина Милана
|
||||
#### Вариант №2
|
||||
|
||||
## Задание:
|
||||
|
||||
Использовать регрессию по варианту для данных из таблицы 1 по варианту (таблица 10),
|
||||
самостоятельно сформулировав задачу.
|
||||
Оценить, насколько хорошо она подходит для решения сформулированной вами задачи.
|
||||
|
||||
Задача по варианту №2: с помощью логистической регрессии.
|
||||
|
||||
Дополнительно: с помощью полиномиальной регрессии 3 степени. Сравнение моделей.
|
||||
|
||||
#### Формулировка задачи:
|
||||
Предсказание доли выбросов CO2 промышленной деятельностью
|
||||
от общего объёма выбросов CO2 страной в определённый год.
|
||||
|
||||
## Данные:
|
||||
|
||||
Этот набор данных обеспечивает углубленный анализ глобальных выбросов CO2 на уровне страны, позволяя лучше понять,
|
||||
какой вклад каждая страна вносит в глобальное совокупное воздействие человека на климат.
|
||||
Он содержит информацию об общих выбросах, а также от добычи и сжигания угля, нефти, газа, цемента и других источников.
|
||||
Данные также дают разбивку выбросов CO2 на душу населения по странам, показывая,
|
||||
какие страны лидируют по уровням загрязнения, и определяют потенциальные области,
|
||||
где следует сосредоточить усилия по сокращению выбросов.
|
||||
Этот набор данных необходим всем, кто хочет получить информацию о своем воздействии на окружающую среду
|
||||
или провести исследование тенденций международного развития.
|
||||
|
||||
Данные организованы с использованием следующих столбцов:
|
||||
|
||||
+ Country: название страны
|
||||
+ ISO 3166-1 alpha-3: трехбуквенный код страны
|
||||
+ Year: год данных исследования
|
||||
+ Total: общее количество CO2, выброшенный страной в этом году
|
||||
+ Coal: количество CO2, выброшенное углем в этом году
|
||||
+ Oil: количество выбросов нефти
|
||||
+ Gas: количество выбросов газа
|
||||
+ Cement: количество выбросов цемента
|
||||
+ Flaring: сжигание на факелах уровни выбросов
|
||||
+ Other: другие формы, такие как промышленные процессы
|
||||
+ Per Capita: столбец «на душу населения»
|
||||
|
||||
|
||||
### Какие технологии использовались:
|
||||
|
||||
Используемые библиотеки:
|
||||
* pandas
|
||||
* math
|
||||
* sklearn
|
||||
|
||||
|
||||
### Как запустить:
|
||||
|
||||
* установить python, sklearn, pandas, math
|
||||
* запустить проект (стартовая точка - main.py)
|
||||
|
||||
### Что делает программа:
|
||||
|
||||
* Загружает набор данных из файла 'CO2.csv', который содержит информацию о выбросах странами CO2 в год от различной промышленной деятельности.
|
||||
* Очищает набор данных путём удаления строк с нулевыми значениями и глобальными значениями по всем странам (строки 'Global') из набора.
|
||||
* Добавляет в набор столбец с хеш-кодом наименования страны.
|
||||
* Добавляет в набор столбец 'procent other' - процент выбросов в процессе промышленной деятельности от общего объема выбросов страны за год.
|
||||
* Выбирает набор признаков (features) из данных, которые будут использоваться для обучения моделей регрессии.
|
||||
* Определяет задачу регрессии, где целевой переменной (task) является 'procent other'.
|
||||
* Делит данные на обучающий и тестовый наборы для обеих задач с использованием функции train_test_split. Тестовый набор составляет 1% от исходных данных.
|
||||
* Создает и обучает модели регрессии LogisticRegression и PolynomialFeatures.
|
||||
* Предсказывает значения целевой переменной на тестовых наборах.
|
||||
* Оценивает качество моделей с помощью среднеквадратичной ошибки.
|
||||
|
||||
|
||||
#### Результаты работы программы:
|
||||
|
||||
![Result](img.png)
|
||||
|
||||
### Вывод:
|
||||
|
||||
Среднеквадратичная ошибка полиномиальной модели равна 0.37, логистической - 2.35.
|
||||
Следовательно, полиномиальная модель предсказывает долю выбросов промышленной деятельностью
|
||||
от общего объёма выбросов CO2 страной в определённый год более точно
|
||||
и лучше всего соответствовует данному набору данных из двух потенциальных моделей.
|
Before Width: | Height: | Size: 72 KiB |
@ -1,70 +0,0 @@
|
||||
import math
|
||||
import pandas as pd
|
||||
from sklearn.model_selection import train_test_split
|
||||
from sklearn.pipeline import make_pipeline
|
||||
from sklearn.preprocessing import PolynomialFeatures
|
||||
from sklearn.linear_model import LogisticRegression, LinearRegression
|
||||
from sklearn.metrics import mean_squared_error
|
||||
|
||||
# По варианту 2:
|
||||
# предсказание доли выбросов CO2 промышленной деятельностью
|
||||
# от общего объёма выбросов CO2 страной в определённый год
|
||||
# с помощью логистической регрессии
|
||||
|
||||
# Дополнительно: с помощью полиномиальной регрессии 3 степени
|
||||
|
||||
# Загружаем данные из файла
|
||||
data = pd.read_csv('CO2.csv')
|
||||
data = data.dropna()
|
||||
data = data[data.Country != 'Global']
|
||||
|
||||
# Хеширование наименований стран
|
||||
countries = {}
|
||||
for country in data['Country']:
|
||||
countries[country] = hash(country)
|
||||
hash_column = []
|
||||
for country in data['Country']:
|
||||
hash_column.append(countries[country])
|
||||
data.insert(loc=0, column='hashcode', value=hash_column)
|
||||
|
||||
# Добавление колонки "доля выбросов промышленным производством в стране за год"
|
||||
procent_other = []
|
||||
others = []
|
||||
totals = []
|
||||
for other in data['Other']:
|
||||
others.append(other)
|
||||
for total in data['Total']:
|
||||
totals.append(total)
|
||||
for i in range(len(others)):
|
||||
procent_other.append(math.ceil(others[i]/totals[i]*100))
|
||||
data.insert(loc=0, column='procent other', value=procent_other)
|
||||
|
||||
# Необходимые признаки
|
||||
features = data[['Total', 'hashcode', 'Year']]
|
||||
|
||||
# Задача логистической регрессии
|
||||
task = data['procent other']
|
||||
|
||||
# Разделение данных на обучающую и тестовую выборки
|
||||
X_train, X_test, y_train, y_test = train_test_split(features, task, test_size=0.01, random_state=5)
|
||||
|
||||
# Применение логистической регрессии
|
||||
model_logic = LogisticRegression(max_iter=1000)
|
||||
model_logic.fit(X_train, y_train)
|
||||
|
||||
# Предсказание на тестовых данных
|
||||
y_pred_logic = model_logic.predict(X_test)
|
||||
|
||||
# Полиномиальная регрессия (degree=3)
|
||||
model_poly = make_pipeline(PolynomialFeatures(degree=3), LinearRegression())
|
||||
model_poly.fit(X_train, y_train)
|
||||
|
||||
# Предсказание на тестовых данных
|
||||
y_pred_poly = model_poly.predict(X_test)
|
||||
|
||||
# Оценка регрессионных моделей
|
||||
poly_mse = mean_squared_error(y_test, y_pred_poly)
|
||||
logic_mse = mean_squared_error(y_test, y_pred_logic)
|
||||
|
||||
print('Среднеквадратичная ошибка полиномиальной регрессии:', poly_mse)
|
||||
print('Среднеквадратичная ошибка логистической регрессии:', logic_mse)
|
@ -1,82 +0,0 @@
|
||||
# Лабораторная работа №6
|
||||
|
||||
## Нейронная сеть
|
||||
|
||||
#### ПИбд-41 Арзамаскина Милана
|
||||
#### Вариант №2
|
||||
|
||||
## Задание:
|
||||
|
||||
Использовать нейронную сеть для данных из таблицы 1 по варианту,
|
||||
самостоятельно сформулировав задачу.
|
||||
Интерпретировать результаты и оценить, насколько хорошо она подходит для решения сформулированной вами задачи.
|
||||
|
||||
Задача по варианту №2: с помощью нейронной сети MLPRegressor.
|
||||
|
||||
#### Формулировка задачи:
|
||||
Задача: посмотреть, как зависит количество выбросов промышленным производством,
|
||||
от таких признаков как: выбросы от сжигания и газа.
|
||||
|
||||
Зависит ли количество выбросов промышленным производством от сжигания (огня) и газа,
|
||||
так как производства могут применять сжигание с целью избавления от промышленных выбросов.
|
||||
|
||||
## Данные:
|
||||
|
||||
Этот набор данных обеспечивает углубленный анализ глобальных выбросов CO2 на уровне страны, позволяя лучше понять,
|
||||
какой вклад каждая страна вносит в глобальное совокупное воздействие человека на климат.
|
||||
Он содержит информацию об общих выбросах, а также от добычи и сжигания угля, нефти, газа, цемента и других источников.
|
||||
Данные также дают разбивку выбросов CO2 на душу населения по странам, показывая,
|
||||
какие страны лидируют по уровням загрязнения, и определяют потенциальные области,
|
||||
где следует сосредоточить усилия по сокращению выбросов.
|
||||
Этот набор данных необходим всем, кто хочет получить информацию о своем воздействии на окружающую среду
|
||||
или провести исследование тенденций международного развития.
|
||||
|
||||
Данные организованы с использованием следующих столбцов:
|
||||
|
||||
+ Country: название страны
|
||||
+ ISO 3166-1 alpha-3: трехбуквенный код страны
|
||||
+ Year: год данных исследования
|
||||
+ Total: общее количество CO2, выброшенное страной в этом году
|
||||
+ Coal: количество CO2, выброшенное углем в этом году
|
||||
+ Oil: количество выбросов нефти
|
||||
+ Gas: количество выбросов газа
|
||||
+ Cement: количество выбросов цемента
|
||||
+ Flaring: выбросы от сжигания
|
||||
+ Other: другие формы, такие как промышленные процессы
|
||||
+ Per Capita: столбец «на душу населения»
|
||||
|
||||
|
||||
### Какие технологии использовались:
|
||||
|
||||
Используемые библиотеки:
|
||||
* pandas
|
||||
* matplotlib
|
||||
* sklearn
|
||||
|
||||
### Как запустить:
|
||||
|
||||
* установить python, sklearn, pandas, matplotlib
|
||||
* запустить проект (стартовая точка - main.py)
|
||||
|
||||
### Что делает программа:
|
||||
|
||||
* Загружает набор данных из файла 'CO2.csv', который содержит информацию о выбросах странами CO2 в год от различной промышленной деятельности.
|
||||
* Очищает набор данных путём удаления строк с нулевыми значениями и глобальными значениями по всем странам (строки 'Global') из набора.
|
||||
* Выбирает набор признаков (features) из данных, которые будут использоваться.
|
||||
* Определяет целевую переменную (task) является 'other'.
|
||||
* Делит данные на обучающий и тестовый наборы для обеих задач с использованием функции train_test_split. Тестовый набор составляет 10% от исходных данных.
|
||||
* Решает задачу регрессии с помощью нейронной сети MLPRegressor.
|
||||
* Предсказывает значения целевой переменной на тестовых наборах.
|
||||
* Выводит коэффициент детерминации для оценки соответствия модели данным.
|
||||
|
||||
|
||||
#### Результаты работы программы:
|
||||
|
||||
![Result](img.png)
|
||||
![Result](img_1.png)
|
||||
|
||||
|
||||
### Вывод:
|
||||
|
||||
Точность работы модели на выбранных данных достаточно низкая, модель не справилась со своей задачей, возможно,
|
||||
другие методы могут выдать лучшие результаты, либо необходима модификация модели.
|
Before Width: | Height: | Size: 125 KiB |
Before Width: | Height: | Size: 52 KiB |
@ -1,43 +0,0 @@
|
||||
import pandas as pd
|
||||
from matplotlib import pyplot as plt
|
||||
from sklearn.model_selection import train_test_split
|
||||
from sklearn.neural_network import MLPRegressor
|
||||
|
||||
# Загрузка данных из файла
|
||||
data = pd.read_csv("CO2.csv")
|
||||
data = data.dropna()
|
||||
data = data[data.Country != 'Global']
|
||||
|
||||
# Выбор признаков и целевой переменной
|
||||
features = data[['Flaring', 'Gas']]
|
||||
task = data['Other']
|
||||
|
||||
# Разделение данных на обучающую и тестовую выборки
|
||||
X_train, X_test, y_train, y_test = train_test_split(features, task, test_size=0.1, random_state=42)
|
||||
|
||||
# Обучение модели
|
||||
model = MLPRegressor(
|
||||
hidden_layer_sizes=(25, 25),
|
||||
activation='relu',
|
||||
solver='adam',
|
||||
random_state=42
|
||||
)
|
||||
model.fit(X_train, y_train)
|
||||
|
||||
# Оценка качества модели на тестовой выборке
|
||||
y_pred = model.predict(X_test)
|
||||
score = model.score(X_test, y_test)
|
||||
print("Коэффициент детерминации на тестовых данных:", score)
|
||||
|
||||
# Оценка точности модели на тестовой выборке
|
||||
accuracy = model.score(X_test, y_test)
|
||||
print(f'Точность модели: {accuracy}')
|
||||
|
||||
# Визуализация модели
|
||||
plt.scatter(y_test, y_pred)
|
||||
plt.plot([y_test.min(), y_test.max()],
|
||||
[y_test.min(), y_test.max()], lw=2)
|
||||
plt.xlabel('Фактическое значение')
|
||||
plt.ylabel('Предсказанное значение')
|
||||
plt.title('Результаты предсказания модели MLPRegressor количества выбросов промышленным производством')
|
||||
plt.show()
|
@ -1,46 +0,0 @@
|
||||
# Лабораторная работа №7
|
||||
|
||||
## Рекуррентная нейронная сеть и задача генерации текста
|
||||
|
||||
#### ПИбд-41 Арзамаскина Милана
|
||||
#### Вариант №2
|
||||
|
||||
### Какие технологии использовались:
|
||||
|
||||
Используемые библиотеки:
|
||||
* numpy
|
||||
* keras
|
||||
* tensorflow
|
||||
|
||||
### Как запустить:
|
||||
|
||||
* установить python, numpy, keras, tensorflow
|
||||
* запустить проект (стартовая точка - main.py)
|
||||
|
||||
### Что делает программа:
|
||||
|
||||
На основе выбранных художественных текстов происходит обучение рекуррентной нейронной сети для решения задачи генерации.
|
||||
Необходимо подобрать архитектуру и параметры так, чтобы приблизиться к максимально осмысленному результату.
|
||||
|
||||
* Читает текст из файлов (english.txt, russian.txt)
|
||||
* Получает входные, выходные данные (X, y), размер словаря и токенайзер. Используем Tokenizer с настройкой char_level=True
|
||||
* Создаёт объект Sequential (последовательная рекуррентная нейронная сеть) и добавление двух слоёв LSTM. Dropout — это метод регуляризации для нейронных сетей и моделей глубокого обучения, решение проблемы переобучения. Слой Dense с функцией активации softmax используется для предсказания следующего слова
|
||||
* Компилирует модель
|
||||
* Обучает модель
|
||||
* Генерирует текст
|
||||
|
||||
|
||||
#### Сгенерированные тексты:
|
||||
|
||||
Генерация на русском языке:
|
||||
|
||||
![Result](img1.png)
|
||||
|
||||
Генерация на английском языке:
|
||||
|
||||
![Result](img2.png)
|
||||
|
||||
|
||||
### Вывод:
|
||||
|
||||
Программа способна сгенерировать осмысленный текст в каждом из случаев.
|
@ -1,8 +0,0 @@
|
||||
The cloud shuddered with blue flame. Thunder rumbled slowly.
|
||||
It either intensified or almost died down. And the rain, obeying the thunder, began to fall harder at times and rustle widely through the leaves, then stopped.
|
||||
Soon the sun broke through the clouds. The old Pushkin Park in Mikhailovskoye and the steep banks of Soroti were ablaze with red clay and wet grass.
|
||||
A slender rainbow lit up across the cloudy distance. It sparkled and smoked, surrounded by wisps of ashen clouds.
|
||||
The rainbow looked like an arch erected on the border of a protected land. Here, in Pushkin’s places, thoughts about the Russian language arose with particular force.
|
||||
Here Pushkin wandered with his head uncovered, with his cold hair tangled by the autumn wind, listening to the wet hum of the pine tops, looking, squinting,
|
||||
from where the autumn clouds rush, I rushed around the fairs. Here wonderful words overwhelmed him, oppressed his soul and, finally, were composed, one by one, with the stub of a goose feather, into ringing stanzas.
|
||||
|
Before Width: | Height: | Size: 106 KiB |
Before Width: | Height: | Size: 103 KiB |
@ -1,62 +0,0 @@
|
||||
import numpy as np
|
||||
from keras.layers import LSTM, Dense
|
||||
from keras.models import Sequential
|
||||
from keras.preprocessing.sequence import pad_sequences
|
||||
from keras.preprocessing.text import Tokenizer
|
||||
|
||||
# Чтение текста из файла
|
||||
# with open('russian.txt', 'r', encoding='utf-8') as file:
|
||||
# text = file.read()
|
||||
with open('english.txt', 'r', encoding='utf-8') as file:
|
||||
text = file.read()
|
||||
|
||||
# Обучение Tokenizer на тексте
|
||||
tokenizer = Tokenizer(char_level=True)
|
||||
tokenizer.fit_on_texts([text])
|
||||
sequences = tokenizer.texts_to_sequences([text])[0]
|
||||
|
||||
# Создание x, y последовательностей
|
||||
X_data, y_data = [], []
|
||||
seq_length = 10
|
||||
for i in range(seq_length, len(sequences)):
|
||||
sequence = sequences[i - seq_length:i]
|
||||
target = sequences[i]
|
||||
X_data.append(sequence)
|
||||
y_data.append(target)
|
||||
|
||||
# Преобразование в массивы
|
||||
X_mass = pad_sequences(X_data, maxlen=seq_length)
|
||||
y_mass = np.array(y_data)
|
||||
|
||||
# Создание модели
|
||||
vocab_size = len(tokenizer.word_index) + 1
|
||||
model = Sequential()
|
||||
model.add(LSTM(256, input_shape=(seq_length, 1), return_sequences=True))
|
||||
model.add(LSTM(128, input_shape=(seq_length, 1)))
|
||||
model.add(Dense(vocab_size, activation='softmax'))
|
||||
|
||||
# Компиляция
|
||||
model.compile(loss='sparse_categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
|
||||
|
||||
# Обучение
|
||||
model.fit(X_mass, y_mass, epochs=100, verbose=1)
|
||||
|
||||
# Функция генерации
|
||||
def generate_text(_text, gen_length):
|
||||
generated_text = _text
|
||||
for _ in range(gen_length):
|
||||
seq = tokenizer.texts_to_sequences([_text])[0]
|
||||
seq = pad_sequences([seq], maxlen=seq_length)
|
||||
prediction = model.predict(seq)[0]
|
||||
predicted_index = np.argmax(prediction)
|
||||
predicted_char = tokenizer.index_word[predicted_index]
|
||||
generated_text += predicted_char
|
||||
_text += predicted_char
|
||||
_text = _text[1:]
|
||||
return generated_text
|
||||
|
||||
# Генерация текста
|
||||
# _text = "Она сверкала"
|
||||
_text = "It sparkled and smoked"
|
||||
generate_text = generate_text(_text, 250)
|
||||
print(generate_text)
|
@ -1,7 +0,0 @@
|
||||
Тучу передернуло синим пламенем. Медленно загремел гром.
|
||||
Он то усиливался, то почти затихал. И дождь, подчиняясь грому, начал временами идти сильнее и широко шуметь по листве, потом останавливался.
|
||||
Вскоре сквозь тучи пробилось солнце. Старый пушкинский парк в Михайловском и крутые берега Сороти запылали рыжей глиной и мокрой травой.
|
||||
Стройная радуга зажглась нал пасмурной далью. Она сверкала и дымилась, окруженная космами пепельных туч.
|
||||
Радуга была похожа на арку, воздвигнутую на границе заповедной земли. С особенной силой здесь, в пушкинских местах, возникали мысли о русском языке.
|
||||
Здесь Пушкин бродил с непокрытой головой, со спутанными осенним ветром холодными волосами, слушал влажный гул сосновых вершин, смотрел, прищурившись,
|
||||
откуда несутся осенние тучи, толкался по ярмаркам. Здесь чудесные слова переполняли его, стесняли его душу и, наконец, слагались по огрызком гусиного пера в звенящие строфы.
|
@ -1,8 +1,8 @@
|
||||
## Лабораторная работа 3. Вариант 4.
|
||||
### Задание
|
||||
По данным из таблицы реши задачу классификации (с помощью дерева решений) на 99% ваших данных.
|
||||
Задачу классификации определить необходимо самостоятельно.
|
||||
Проверьте работу модели на оставшемся проценте, сделайте вывод.
|
||||
Выполнить ранжирование признаков и решить с помощью библиотечной реализации дерева решений
|
||||
задачу классификации на 99% данных из курсовой работы. Проверить
|
||||
работу модели на оставшемся проценте, сделать вывод.
|
||||
|
||||
Модель:
|
||||
- Дерево решений `DecisionTreeClassifier`.
|
||||
@ -65,8 +65,21 @@ data['Transmission Type'] = label_encoder.fit_transform(data['Transmission Type'
|
||||
data['Registration Status'] = label_encoder.fit_transform(data['Registration Status'])
|
||||
```
|
||||
|
||||
#### Формулировка задачи
|
||||
Предсказать статус регистрации автомобиля (Registration Status) на основе других параметров.
|
||||
#### Выявление значимых параметров
|
||||
```python
|
||||
# Оценка важности признаков
|
||||
feature_importances = clf.feature_importances_
|
||||
feature_importance_df = pd.DataFrame({'Feature': X_train.columns, 'Importance': feature_importances})
|
||||
feature_importance_df = feature_importance_df.sort_values(by='Importance', ascending=False)
|
||||
```
|
||||
|
||||
#### Решение задачи кластеризации на полном наборе признаков
|
||||
Чтобы решить задачу кластеризации моделью `DecisionTreeClassifier`, воспользуемся методом `.predict()`.
|
||||
```python
|
||||
clf = DecisionTreeClassifier(max_depth=5, random_state=42)
|
||||
clf.fit(X_train, y_train)
|
||||
y_pred = clf.predict(X_test)
|
||||
```
|
||||
|
||||
#### Оценка эффективности
|
||||
Для оценки точности модели будем использовать встроенный инструмент `accuracy_score`:
|
||||
@ -75,7 +88,6 @@ accuracy = accuracy_score(y_test, y_pred)
|
||||
```
|
||||
|
||||
#### Результаты
|
||||
![](res.png "Точность")
|
||||
![](accuracy.png "Точность")
|
||||
|
||||
### Вывод
|
||||
Алгоритм показал высокую точность. Считаем, что алгоритм успешен.
|
||||
![](important.png "Важность признаков")
|
||||
|
BIN
basharin_sevastyan_lab_3/accuracy.png
Normal file
After Width: | Height: | Size: 4.1 KiB |
BIN
basharin_sevastyan_lab_3/important.png
Normal file
After Width: | Height: | Size: 22 KiB |
@ -40,29 +40,39 @@ data['Body Type'] = label_encoder.fit_transform(data['Body Type'])
|
||||
data['Transmission Type'] = label_encoder.fit_transform(data['Transmission Type'])
|
||||
data['Registration Status'] = label_encoder.fit_transform(data['Registration Status'])
|
||||
|
||||
# Определение целевой переменной и признаков
|
||||
X = data.drop('Registration Status', axis=1) # Признаки
|
||||
y = data['Registration Status'] # Целевая переменная
|
||||
# Разделение данных на обучающий набор и тестовый набор. Мы будем использовать 99% данных для обучения.
|
||||
train_data, test_data = train_test_split(data, test_size=0.01, random_state=42)
|
||||
|
||||
# Разделение данных на обучающий и тестовый наборы
|
||||
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.01, random_state=42)
|
||||
# Определите целевую переменную (то, что вы пытаетесь предсказать, например, 'Price').
|
||||
X_train = train_data.drop(columns=['Price'])
|
||||
y_train = train_data['Price']
|
||||
X_test = test_data.drop(columns=['Price'])
|
||||
y_test = test_data['Price']
|
||||
|
||||
# Создание и обучение модели дерева решений
|
||||
model = DecisionTreeClassifier(random_state=42)
|
||||
model.fit(X_train, y_train)
|
||||
# Создание и обучение модели DecisionTreeClassifier
|
||||
clf = DecisionTreeClassifier(random_state=42)
|
||||
clf.fit(X_train, y_train)
|
||||
|
||||
# Предсказание на тестовом наборе
|
||||
y_pred = model.predict(X_test)
|
||||
# Оценка важности признаков
|
||||
feature_importances = clf.feature_importances_
|
||||
|
||||
# Оценка точности модели
|
||||
# Создание DataFrame с именами признаков и их важностью
|
||||
feature_importance_df = pd.DataFrame({'Feature': X_train.columns, 'Importance': feature_importances})
|
||||
|
||||
# Сортировка признаков по убыванию важности
|
||||
feature_importance_df = feature_importance_df.sort_values(by='Importance', ascending=False)
|
||||
|
||||
# Вывод ранжированных признаков
|
||||
print(feature_importance_df)
|
||||
|
||||
clf = DecisionTreeClassifier(max_depth=5, random_state=42)
|
||||
|
||||
# Обучите модель на обучающем наборе данных
|
||||
clf.fit(X_train, y_train)
|
||||
|
||||
# Предсказание целевой переменной на тестовом наборе данных
|
||||
y_pred = clf.predict(X_test)
|
||||
|
||||
# Оцените производительность модели с помощью различных метрик
|
||||
accuracy = accuracy_score(y_test, y_pred)
|
||||
print(f'Accuracy: {accuracy * 100:.2f}%')
|
||||
|
||||
# Можете также провести анализ других метрик, таких как precision, recall, F1-score и т.д.
|
||||
|
||||
# Проверка работы модели на оставшемся проценте данных (1%)
|
||||
y_remaining = model.predict(X_test) # Предполагаем, что X_test представляет оставшиеся 99% данных
|
||||
|
||||
# Вывод результата
|
||||
print('Результат предсказания на оставшемся проценте данных:')
|
||||
print(y_remaining)
|
||||
print(f'Точность модели: {accuracy}')
|
||||
|
Before Width: | Height: | Size: 15 KiB |
@ -1,110 +0,0 @@
|
||||
## Лабораторная работа 4. Вариант 5.
|
||||
### Задание
|
||||
Использовать метод кластеризации по варианту для набора данных, самостоятельно сформулировав задачу.
|
||||
Интерпретировать результаты и оценить, насколько хорошо он подходит для решения сформулированной вами задачи.
|
||||
Алгоритм кластеризации: K-means
|
||||
|
||||
### Как запустить
|
||||
Для запуска программы необходимо с помощью командной строки в корневой директории файлов прокета прописать:
|
||||
``` python
|
||||
python main.py
|
||||
```
|
||||
|
||||
### Используемые технологии
|
||||
- Библиотека `pandas`, используемая для работы с данными для анализа scv формата.
|
||||
- `sklearn` (scikit-learn): Scikit-learn - это библиотека для машинного обучения и анализа данных в Python. Из данной библиотеки были использованы следующие модули:
|
||||
- `KMeans` - реализация алгоритма K-means для кластеризации данных.
|
||||
- `LabelEncoder` - это класс из scikit-learn, используемый для преобразования категориальных признаков (например, строки) в числовые значения.
|
||||
- `matplotlib.pyplot` - библиотека для визуализации данных, используется для построения графика метода локтя и визуализации результатов кластеризации.
|
||||
|
||||
### Описание работы
|
||||
#### Описание набора данных
|
||||
Набор данных: набор данных о цене автомобиля в автопарке.
|
||||
|
||||
Названия столбцов набора данных и их описание:
|
||||
|
||||
- Id: Уникальный идентификатор для каждого автомобиля в списке.
|
||||
- Price: Ценовой диапазон автомобилей с конкретными ценниками и подсчетами. (111000 - 77500000)
|
||||
- Company Name: Название компании-производителя автомобилей с указанием процентной доли представительства каждой компании.
|
||||
- Model Name: Название модели автомобилей с указанием процентного соотношения каждой модели.
|
||||
- Model Year: Диапазон лет выпуска автомобилей с указанием количества и процентных соотношений. (1990 - 2019)
|
||||
- Location: Местоположение автомобилей с указанием регионов, где они доступны для покупки, а также их процентное соотношение.
|
||||
- Mileage: Информация о пробеге автомобилей с указанием диапазонов пробега, количества и процентов. (1 - 999999)
|
||||
- Engine Type: Описания типов двигателей с процентными соотношениями для каждого типа.
|
||||
- Engine Capacity: Мощность двигателя варьируется в зависимости от количества и процентов. (16 - 6600)
|
||||
- Color: Цветовое распределение автомобилей с указанием процентных соотношений для каждого цвета.
|
||||
- Assembly: Импорт или местный рынок.
|
||||
- Body Type: Тип кузова.
|
||||
- Transmission Type: Тип трансмиссии.
|
||||
- Registration Status: Статус регистрации.
|
||||
|
||||
Ссылка на страницу набора на kuggle: [Ultimate Car Price Prediction Dataset](https://www.kaggle.com/datasets/mohidabdulrehman/ultimate-car-price-prediction-dataset/data)
|
||||
|
||||
#### Оцифровка и нормализация данных
|
||||
Для нормальной работы с данными, необходимо исключить из них все нечисловые значения.
|
||||
После этого, представить все строковые значения параметров как числовые и очистить датасет от "мусора".
|
||||
Для удаления нечисловых значений воспользуемся функцией `.dropna()`.
|
||||
Так же мы удаляем первый столбец `Id`, так как при открытии файла в `pd` он сам нумерует строки.
|
||||
|
||||
Все нечисловые значения мы преобразуем в числовые с помощью `LabelEncoder`:
|
||||
```python
|
||||
label_encoder = LabelEncoder()
|
||||
data['Location'] = label_encoder.fit_transform(data['Location'])
|
||||
data['Company Name'] = label_encoder.fit_transform(data['Company Name'])
|
||||
data['Model Name'] = label_encoder.fit_transform(data['Model Name'])
|
||||
data['Engine Type'] = label_encoder.fit_transform(data['Engine Type'])
|
||||
data['Color'] = label_encoder.fit_transform(data['Color'])
|
||||
data['Assembly'] = label_encoder.fit_transform(data['Assembly'])
|
||||
data['Body Type'] = label_encoder.fit_transform(data['Body Type'])
|
||||
data['Transmission Type'] = label_encoder.fit_transform(data['Transmission Type'])
|
||||
data['Registration Status'] = label_encoder.fit_transform(data['Registration Status'])
|
||||
```
|
||||
|
||||
#### Выбор признаков для кластеризации:
|
||||
```python
|
||||
features = ['Price', 'Model Year', 'Mileage', 'Engine Capacity']
|
||||
```
|
||||
Данный набор признаков был выбран, так как многие из них показали высокую важность в предыдущей лабораторной работе.
|
||||
|
||||
#### Метод локтя
|
||||
Алгоритм K-средних требует четкого задание количества кластеров. Выберем количество кластеров, используя метод локтя.
|
||||
```python
|
||||
from sklearn.cluster import KMeans
|
||||
|
||||
inertia = []
|
||||
for n_clusters in range(1, 11):
|
||||
kmeans = KMeans(n_clusters=n_clusters, random_state=42)
|
||||
kmeans.fit(data[features])
|
||||
inertia.append(kmeans.inertia_)
|
||||
```
|
||||
В результате мы получим следующий график:
|
||||
![](elbow.png "Точность")
|
||||
Анализирую этот график, видим, что примерно на 5-6 шаге инерция меняется уже не значительно.
|
||||
Задаем значение кластеров равным 5.
|
||||
```python
|
||||
optimal_clusters = 5
|
||||
```
|
||||
|
||||
#### Применение K-means
|
||||
K-means применяется с оптимальным числом кластеров, вычисленным на предыдущем этапе.
|
||||
```python
|
||||
from sklearn.cluster import KMeans
|
||||
|
||||
kmeans = KMeans(n_clusters=optimal_clusters, random_state=42)
|
||||
data['Cluster'] = kmeans.fit_predict(data[features])
|
||||
```
|
||||
|
||||
#### Интерпретация результатов
|
||||
Для каждого кластера выводятся статистические характеристики выбранных признаков.
|
||||
![](clust1.png "Точность")
|
||||
![](clust2.png "Точность")
|
||||
|
||||
#### Визуализация результатов
|
||||
Результаты кластеризации визуализируются на графике рассеяния, например, по двум признакам.
|
||||
![](engine_clust.png "Точность")
|
||||
![](mileage_clust.png "Точность")
|
||||
|
||||
### Вывод
|
||||
На основе графиков и интерпретированных результатов можно сделать вывод, что кластеризация проведена
|
||||
верно. Коэффициент силуэта: `0.62`. Коэффициент может варьироваться от -1 до 1, можно сказать, что оценка высокая и
|
||||
метод K-means подходит для решения поставленной задачи.
|
Before Width: | Height: | Size: 87 KiB |
Before Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 36 KiB |
@ -1,92 +0,0 @@
|
||||
import pandas as pd
|
||||
from sklearn.preprocessing import LabelEncoder
|
||||
from sklearn.cluster import KMeans
|
||||
from sklearn.metrics import silhouette_score
|
||||
import matplotlib.pyplot as plt
|
||||
|
||||
''' Названия столбцов набора данных и их описание:
|
||||
Id: Уникальный идентификатор для каждого автомобиля в списке.
|
||||
Price: Ценовой диапазон автомобилей с конкретными ценниками и подсчетами. (111000 - 77500000)
|
||||
Company Name: Название компании-производителя автомобилей с указанием процентной доли представительства каждой компании.
|
||||
Model Name: Название модели автомобилей с указанием процентного соотношения каждой модели.
|
||||
Model Year: Диапазон лет выпуска автомобилей с указанием количества и процентных соотношений. (1990 - 2019)
|
||||
Location: Местоположение автомобилей с указанием регионов, где они доступны для покупки, а также их процентное соотношение.
|
||||
Mileage: Информация о пробеге автомобилей с указанием диапазонов пробега, количества и процентов. (1 - 999999)
|
||||
Engine Type: Описания типов двигателей с процентными соотношениями для каждого типа.
|
||||
Engine Capacity: Мощность двигателя варьируется в зависимости от количества и процентов. (16 - 6600)
|
||||
Color: Цветовое распределение автомобилей с указанием процентных соотношений для каждого цвета.
|
||||
'''
|
||||
|
||||
|
||||
# Загрузите данные из вашей курсовой работы, предположим, что у вас есть файл CSV.
|
||||
data = pd.read_csv('Data_pakwheels.csv')
|
||||
data.pop("Id")
|
||||
|
||||
data.dropna(inplace=True) # Удаление строки с пропущенными значениями.
|
||||
|
||||
# Преобразуйте категориальные признаки в числовые. Используйте, например, one-hot encoding.
|
||||
# data = pd.get_dummies(data, columns=['Company Name', 'Model Name', 'Location', 'Engine Type', 'Color'])
|
||||
|
||||
# Создайте объект LabelEncoder
|
||||
label_encoder = LabelEncoder()
|
||||
|
||||
data['Location'] = label_encoder.fit_transform(data['Location'])
|
||||
data['Company Name'] = label_encoder.fit_transform(data['Company Name'])
|
||||
data['Model Name'] = label_encoder.fit_transform(data['Model Name'])
|
||||
data['Engine Type'] = label_encoder.fit_transform(data['Engine Type'])
|
||||
data['Color'] = label_encoder.fit_transform(data['Color'])
|
||||
data['Assembly'] = label_encoder.fit_transform(data['Assembly'])
|
||||
data['Body Type'] = label_encoder.fit_transform(data['Body Type'])
|
||||
data['Transmission Type'] = label_encoder.fit_transform(data['Transmission Type'])
|
||||
data['Registration Status'] = label_encoder.fit_transform(data['Registration Status'])
|
||||
|
||||
# Выбор признаков для кластеризации
|
||||
features = ['Price', 'Model Year', 'Mileage', 'Engine Capacity']
|
||||
|
||||
# Выбор числа кластеров с использованием метода локтя
|
||||
inertia = []
|
||||
for n_clusters in range(1, 11):
|
||||
kmeans = KMeans(n_clusters=n_clusters, random_state=42)
|
||||
kmeans.fit(data[features])
|
||||
inertia.append(kmeans.inertia_)
|
||||
|
||||
# Визуализация метода локтя
|
||||
plt.plot(range(1, 11), inertia, marker='o')
|
||||
plt.xlabel('Number of clusters')
|
||||
plt.ylabel('Inertia')
|
||||
plt.title('Elbow Method for Optimal k')
|
||||
plt.show()
|
||||
|
||||
# Выбор оптимального числа кластеров (пример, если "локоть" находится при k=3)
|
||||
optimal_clusters = 5
|
||||
|
||||
# Применение K-means
|
||||
kmeans = KMeans(n_clusters=optimal_clusters, random_state=42)
|
||||
data['Cluster'] = kmeans.fit_predict(data[features])
|
||||
|
||||
# получение меток кластеров
|
||||
labels = kmeans.labels_
|
||||
data['Cluster'] = labels
|
||||
# оценка качества с помощью коэффициента силуэта
|
||||
silhouette = silhouette_score(data[features].values, labels)
|
||||
print(f"Коэффициент силуэта: {silhouette:.2f}")
|
||||
|
||||
# Интерпретация результатов
|
||||
for cluster_num in range(optimal_clusters):
|
||||
cluster_data = data[data['Cluster'] == cluster_num]
|
||||
print(f"\nCluster {cluster_num + 1} characteristics:")
|
||||
print(cluster_data[features].describe())
|
||||
|
||||
# Дополнительная визуализация, например, по двум признакам
|
||||
plt.scatter(data['Price'], data['Mileage'], c=data['Cluster'], cmap='viridis')
|
||||
plt.xlabel('Price')
|
||||
plt.ylabel('Mileage')
|
||||
plt.title('Clustering Results')
|
||||
plt.show()
|
||||
|
||||
# получение меток кластеров
|
||||
labels = kmeans.labels_
|
||||
data['Cluster'] = labels
|
||||
# оценка качества с помощью коэффициента силуэта
|
||||
silhouette = silhouette_score(data[features].values, labels)
|
||||
print(f"Коэффициент силуэта: {silhouette:.2f}")
|
Before Width: | Height: | Size: 27 KiB |
@ -1,56 +0,0 @@
|
||||
Линейная регрессия
|
||||
## Лабораторная работа 3. Вариант 5.
|
||||
### Задание
|
||||
Использовать регрессию по варианту для данных из курсовой работы. Самостоятельно сформулировав задачу. Интерпретировать результаты и оценить, насколько хорошо он подходит для
|
||||
решения сформулированной задачи.
|
||||
|
||||
Модель регрессии:
|
||||
- Линейная регрессия
|
||||
|
||||
### Как запустить
|
||||
Для запуска программы необходимо с помощью командной строки в корневой директории файлов прокета прописать:
|
||||
``` python
|
||||
python main.py
|
||||
```
|
||||
|
||||
### Используемые технологии
|
||||
- Библиотека `pandas`, используемая для работы с данными для анализа scv формата.
|
||||
- `sklearn` (scikit-learn): Scikit-learn - это библиотека для машинного обучения и анализа данных в Python. Из данной библиотеки были использованы следующие модули:
|
||||
- `metrics` - набор инструменов для оценки моделей
|
||||
- `DecisionTreeClassifier` - классификатор, реализующий алгоритм дерева решений. Дерево решений - это модель машинного обучения, которая разбивает данные на рекурсивные решения на основе значений признаков. Она используется для задач классификации и регрессии.
|
||||
- `accuracy_score` -функция из scikit-learn, которая используется для оценки производительности модели классификации путем вычисления доли правильно классифицированных примеров (точности) на тестовом наборе данных.
|
||||
- `train_test_split` - это функция из scikit-learn, используемая для разделения набора данных на обучающий и тестовый наборы.
|
||||
- `LabelEncoder` - это класс из scikit-learn, используемый для преобразования категориальных признаков (например, строки) в числовые значения.
|
||||
|
||||
### Описание работы
|
||||
#### Описание набора данных
|
||||
Набор данных: набор данных о цене автомобиля в автопарке.
|
||||
|
||||
Названия столбцов набора данных и их описание:
|
||||
|
||||
- Id: Уникальный идентификатор для каждого автомобиля в списке.
|
||||
- Price: Ценовой диапазон автомобилей с конкретными ценниками и подсчетами. (111000 - 77500000)
|
||||
- Company Name: Название компании-производителя автомобилей с указанием процентной доли представительства каждой компании.
|
||||
- Model Name: Название модели автомобилей с указанием процентного соотношения каждой модели.
|
||||
- Model Year: Диапазон лет выпуска автомобилей с указанием количества и процентных соотношений. (1990 - 2019)
|
||||
- Location: Местоположение автомобилей с указанием регионов, где они доступны для покупки, а также их процентное соотношение.
|
||||
- Mileage: Информация о пробеге автомобилей с указанием диапазонов пробега, количества и процентов. (1 - 999999)
|
||||
- Engine Type: Описания типов двигателей с процентными соотношениями для каждого типа.
|
||||
- Engine Capacity: Мощность двигателя варьируется в зависимости от количества и процентов. (16 - 6600)
|
||||
- Color: Цветовое распределение автомобилей с указанием процентных соотношений для каждого цвета.
|
||||
- Assembly: Импорт или местный рынок.
|
||||
- Body Type: Тип кузова.
|
||||
- Transmission Type: Тип трансмиссии.
|
||||
- Registration Status: Статус регистрации.
|
||||
|
||||
Ссылка на страницу набора на kuggle: [Ultimate Car Price Prediction Dataset](https://www.kaggle.com/datasets/mohidabdulrehman/ultimate-car-price-prediction-dataset/data)
|
||||
|
||||
### Формулировка задачи
|
||||
Предсказание цены автомобиля на основе различных характеристик.
|
||||
|
||||
### Результат
|
||||
![](res.png)
|
||||
|
||||
### Вывод
|
||||
Коэффициент детерминации полученной модели равен примерно 0.53, что можно считать приемлемым результатом. Напомню, что
|
||||
чем ближе значение коэффициент детерминации к 1, тем лучше модель объясняет изменчивость целевой переменной.
|
@ -1,62 +0,0 @@
|
||||
from sklearn.linear_model import LinearRegression
|
||||
import pandas as pd
|
||||
from sklearn.metrics import r2_score
|
||||
from sklearn.model_selection import train_test_split
|
||||
from sklearn.preprocessing import LabelEncoder
|
||||
|
||||
''' Названия столбцов набора данных и их описание:
|
||||
Id: Уникальный идентификатор для каждого автомобиля в списке.
|
||||
Price: Ценовой диапазон автомобилей с конкретными ценниками и подсчетами. (111000 - 77500000)
|
||||
Company Name: Название компании-производителя автомобилей с указанием процентной доли представительства каждой компании.
|
||||
Model Name: Название модели автомобилей с указанием процентного соотношения каждой модели.
|
||||
Model Year: Диапазон лет выпуска автомобилей с указанием количества и процентных соотношений. (1990 - 2019)
|
||||
Location: Местоположение автомобилей с указанием регионов, где они доступны для покупки, а также их процентное соотношение.
|
||||
Mileage: Информация о пробеге автомобилей с указанием диапазонов пробега, количества и процентов. (1 - 999999)
|
||||
Engine Type: Описания типов двигателей с процентными соотношениями для каждого типа.
|
||||
Engine Capacity: Мощность двигателя варьируется в зависимости от количества и процентов. (16 - 6600)
|
||||
Color: Цветовое распределение автомобилей с указанием процентных соотношений для каждого цвета.
|
||||
'''
|
||||
|
||||
|
||||
# Загрузите данные из вашей курсовой работы, предположим, что у вас есть файл CSV.
|
||||
data = pd.read_csv('Data_pakwheels.csv')
|
||||
data.pop("Id")
|
||||
|
||||
data.dropna(inplace=True) # Удаление строки с пропущенными значениями.
|
||||
|
||||
# Преобразуйте категориальные признаки в числовые. Используйте, например, one-hot encoding.
|
||||
# data = pd.get_dummies(data, columns=['Company Name', 'Model Name', 'Location', 'Engine Type', 'Color'])
|
||||
|
||||
# Создайте объект LabelEncoder
|
||||
label_encoder = LabelEncoder()
|
||||
|
||||
data['Location'] = label_encoder.fit_transform(data['Location'])
|
||||
data['Company Name'] = label_encoder.fit_transform(data['Company Name'])
|
||||
data['Model Name'] = label_encoder.fit_transform(data['Model Name'])
|
||||
data['Engine Type'] = label_encoder.fit_transform(data['Engine Type'])
|
||||
data['Color'] = label_encoder.fit_transform(data['Color'])
|
||||
data['Assembly'] = label_encoder.fit_transform(data['Assembly'])
|
||||
data['Body Type'] = label_encoder.fit_transform(data['Body Type'])
|
||||
data['Transmission Type'] = label_encoder.fit_transform(data['Transmission Type'])
|
||||
data['Registration Status'] = label_encoder.fit_transform(data['Registration Status'])
|
||||
|
||||
# Выбор признаков
|
||||
selected_features = ['Model Year', 'Mileage', 'Engine Capacity', 'Engine Type', 'Body Type']
|
||||
|
||||
# Разделение данных на признаки (X) и целевую переменную (y)
|
||||
X = data[selected_features]
|
||||
y = data['Price']
|
||||
|
||||
# Разделение на обучающую и тестовую выборки
|
||||
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
|
||||
|
||||
# Создание и обучение модели
|
||||
model = LinearRegression()
|
||||
model.fit(X_train, y_train)
|
||||
|
||||
# Предсказание на тестовой выборке
|
||||
y_pred = model.predict(X_test)
|
||||
|
||||
# Оценка модели
|
||||
r2 = r2_score(y_test, y_pred)
|
||||
print(f'R-squared: {r2}')
|
Before Width: | Height: | Size: 3.7 KiB |
@ -1,63 +0,0 @@
|
||||
## Лабораторная работа 6. Вариант 5.
|
||||
### Задание
|
||||
С использованием нейронной сети (MLPRegressor) предсказать стоимость автомобилей на основе предоставленных данных.
|
||||
|
||||
### Как запустить
|
||||
Для запуска программы необходимо с помощью командной строки в корневой директории файлов прокета прописать:
|
||||
``` python
|
||||
python main.py
|
||||
```
|
||||
|
||||
### Используемые технологии
|
||||
- Библиотека `pandas`, используемая для работы с данными для анализа scv формата.
|
||||
- `sklearn` (scikit-learn): Scikit-learn - это библиотека для машинного обучения и анализа данных в Python. Из данной библиотеки были использованы следующие модули:
|
||||
- `metrics` - набор инструменов для оценки моделей.
|
||||
- `MLPClassifier` - является реализацией многослойной нейронной сети для задачи классификации.
|
||||
- `accuracy_score` -функция из scikit-learn, которая используется для оценки производительности модели классификации путем вычисления доли правильно классифицированных примеров (точности) на тестовом наборе данных.
|
||||
- `train_test_split` - это функция из scikit-learn, используемая для разделения набора данных на обучающий и тестовый наборы.
|
||||
- `LabelEncoder` - это класс из scikit-learn, используемый для преобразования категориальных признаков (например, строки) в числовые значения.
|
||||
|
||||
### Описание работы
|
||||
#### Описание набора данных
|
||||
Набор данных: набор данных о цене автомобиля в автопарке.
|
||||
|
||||
Названия столбцов набора данных и их описание:
|
||||
|
||||
- Id: Уникальный идентификатор для каждого автомобиля в списке.
|
||||
- Price: Ценовой диапазон автомобилей с конкретными ценниками и подсчетами. (111000 - 77500000)
|
||||
- Company Name: Название компании-производителя автомобилей с указанием процентной доли представительства каждой компании.
|
||||
- Model Name: Название модели автомобилей с указанием процентного соотношения каждой модели.
|
||||
- Model Year: Диапазон лет выпуска автомобилей с указанием количества и процентных соотношений. (1990 - 2019)
|
||||
- Location: Местоположение автомобилей с указанием регионов, где они доступны для покупки, а также их процентное соотношение.
|
||||
- Mileage: Информация о пробеге автомобилей с указанием диапазонов пробега, количества и процентов. (1 - 999999)
|
||||
- Engine Type: Описания типов двигателей с процентными соотношениями для каждого типа.
|
||||
- Engine Capacity: Мощность двигателя варьируется в зависимости от количества и процентов. (16 - 6600)
|
||||
- Color: Цветовое распределение автомобилей с указанием процентных соотношений для каждого цвета.
|
||||
- Assembly: Импорт или местный рынок.
|
||||
- Body Type: Тип кузова.
|
||||
- Transmission Type: Тип трансмиссии.
|
||||
- Registration Status: Статус регистрации.
|
||||
|
||||
Ссылка на страницу набора на kuggle: [Ultimate Car Price Prediction Dataset](https://www.kaggle.com/datasets/mohidabdulrehman/ultimate-car-price-prediction-dataset/data)
|
||||
|
||||
#### Оценка эффективности
|
||||
Для оценки точности модели будем использовать встроенный инструмент `accuracy_score`:
|
||||
```python
|
||||
from sklearn.metrics import accuracy_score, classification_report, confusion_matrix
|
||||
|
||||
accuracy = accuracy_score(y_test, y_pred)
|
||||
conf_matrix = confusion_matrix(y_test, y_pred)
|
||||
classification_rep = classification_report(y_test, y_pred)
|
||||
```
|
||||
|
||||
#### Результаты
|
||||
![](res.png "Точность")
|
||||
|
||||
### Вывод
|
||||
Алгоритм показал высокую точность. Считаем, что алгоритм успешен.
|
||||
Но если обратить внимание на результаты алгоритма 3-й лабораторной работы, выполняющего ту же задачу, окажется, что
|
||||
многослойная нейронная сеть справляется хуже:
|
||||
![](res_lab_3.png "Точность")
|
||||
Точность MLP (0.91) меньше дерева решений (0.93) (без приведения в проценты). Получается, что MLP показала хороший
|
||||
результат, но обычная регрессия с поставленной задачей справилась лучше - нет смысла использовать более "тяжелый"
|
||||
алгоритм, если он не дает значительного выигрыша в качестве.
|
@ -1,65 +0,0 @@
|
||||
import pandas as pd
|
||||
from sklearn.metrics import accuracy_score, classification_report, confusion_matrix
|
||||
from sklearn.model_selection import train_test_split
|
||||
from sklearn.preprocessing import LabelEncoder
|
||||
from sklearn.neural_network import MLPClassifier
|
||||
|
||||
''' Названия столбцов набора данных и их описание:
|
||||
Id: Уникальный идентификатор для каждого автомобиля в списке.
|
||||
Price: Ценовой диапазон автомобилей с конкретными ценниками и подсчетами. (111000 - 77500000)
|
||||
Company Name: Название компании-производителя автомобилей с указанием процентной доли представительства каждой компании.
|
||||
Model Name: Название модели автомобилей с указанием процентного соотношения каждой модели.
|
||||
Model Year: Диапазон лет выпуска автомобилей с указанием количества и процентных соотношений. (1990 - 2019)
|
||||
Location: Местоположение автомобилей с указанием регионов, где они доступны для покупки, а также их процентное соотношение.
|
||||
Mileage: Информация о пробеге автомобилей с указанием диапазонов пробега, количества и процентов. (1 - 999999)
|
||||
Engine Type: Описания типов двигателей с процентными соотношениями для каждого типа.
|
||||
Engine Capacity: Мощность двигателя варьируется в зависимости от количества и процентов. (16 - 6600)
|
||||
Color: Цветовое распределение автомобилей с указанием процентных соотношений для каждого цвета.
|
||||
'''
|
||||
|
||||
|
||||
# Загрузите данные из вашей курсовой работы, предположим, что у вас есть файл CSV.
|
||||
data = pd.read_csv('Data_pakwheels.csv')
|
||||
data.pop("Id")
|
||||
|
||||
data.dropna(inplace=True) # Удаление строки с пропущенными значениями.
|
||||
|
||||
# Преобразуйте категориальные признаки в числовые. Используйте, например, one-hot encoding.
|
||||
# data = pd.get_dummies(data, columns=['Company Name', 'Model Name', 'Location', 'Engine Type', 'Color'])
|
||||
|
||||
# Создайте объект LabelEncoder
|
||||
label_encoder = LabelEncoder()
|
||||
|
||||
data['Location'] = label_encoder.fit_transform(data['Location'])
|
||||
data['Company Name'] = label_encoder.fit_transform(data['Company Name'])
|
||||
data['Model Name'] = label_encoder.fit_transform(data['Model Name'])
|
||||
data['Engine Type'] = label_encoder.fit_transform(data['Engine Type'])
|
||||
data['Color'] = label_encoder.fit_transform(data['Color'])
|
||||
data['Assembly'] = label_encoder.fit_transform(data['Assembly'])
|
||||
data['Body Type'] = label_encoder.fit_transform(data['Body Type'])
|
||||
data['Transmission Type'] = label_encoder.fit_transform(data['Transmission Type'])
|
||||
data['Registration Status'] = label_encoder.fit_transform(data['Registration Status'])
|
||||
|
||||
# Определите признаки (X) и целевую переменную (y)
|
||||
X = data.drop('Registration Status', axis=1)
|
||||
y = data['Registration Status']
|
||||
|
||||
# Разделите данные на обучающий и тестовый наборы
|
||||
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
|
||||
|
||||
# Инициализируйте и обучите MLPClassifier
|
||||
mlp_classifier = MLPClassifier(hidden_layer_sizes=(100,), max_iter=1000, random_state=42)
|
||||
mlp_classifier.fit(X_train, y_train)
|
||||
|
||||
# Сделайте предсказания на тестовом наборе
|
||||
y_pred = mlp_classifier.predict(X_test)
|
||||
|
||||
# Оцените производительность модели
|
||||
accuracy = accuracy_score(y_test, y_pred)
|
||||
conf_matrix = confusion_matrix(y_test, y_pred)
|
||||
classification_rep = classification_report(y_test, y_pred)
|
||||
|
||||
# Выведите результаты
|
||||
print(f'Accuracy: {accuracy}')
|
||||
print(f'Confusion Matrix:\n{conf_matrix}')
|
||||
print(f'Classification Report:\n{classification_rep}')
|
Before Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 15 KiB |
@ -1,136 +0,0 @@
|
||||
Annotation
|
||||
|
||||
The Fellowship of the Ring is the first part of J.R.R.Tolkien's epic adventure, The Lord Of The Rings.
|
||||
Sauron, the Dark Lord, has gathered to him all the Rings of Power - the means by which he intends to rule Middle-earth. All he lacks in his plans for dominion is the One Ring - the ring that rules them all - which has fallen into the hands of the hobbit Bilbo Baggins.
|
||||
In a sleepy village in the Shire, young Frodo Baggins finds himself faced with an immense task, as his elderly cousin Bilbo entrusts the Ring to his care. Frodo must leave his home and make a perilous journey across Middle-earh to the Cracks of Doom, there to destroy the Ring and foil the Dark Lord in his evil purpose.
|
||||
* * *
|
||||
JRR Tolkien The Lord of the Ring 1 - The Fellowship of the Ring
|
||||
Table of Contents
|
||||
|
||||
Foreward
|
||||
|
||||
This tale grew in the telling, until it became a history of the Great War of the Ring and included many glimpses of the yet more ancient history that preceded it. It was begun soon afterThe Hobbit was written and before its publication in 1937; but I did not go on with this sequel, for I wished first to complete and set in order the mythology and legends of the Elder Days, which had then been taking shape for some years. I desired to do this for my own satisfaction, and I had little hope that other people would be interested in this work, especially since it was primarily linguistic in inspiration and was begun in order to provide the necessary background of 'history' for Elvish tongues.
|
||||
|
||||
When those whose advice and opinion I sought correctedlittle hope tono hope, I went back to the sequel, encouraged by requests from readers for more information concerning hobbits and their adventures. But the story was drawn irresistibly towards the older world, and became an account, as it were, of its end and passing away before its beginning and middle had been told. The process had begun in the writing ofThe Hobbit, in which there were already some references to the older matter: Elrond, Gondolin, the High-elves, and the orcs, as well as glimpses that had arisen unbidden of things higher or deeper or darker than its surface: Durin, Moria, Gandalf, the Necromancer, the Ring. The discovery of the significance of these glimpses and of their relation to the ancient histories revealed the Third Age and its culmination in the War of the Ring.
|
||||
|
||||
Those who had asked for more information about hobbits eventually got it, but they had to wait a long time; for the composition ofThe Lord of the Rings went on at intervals during the years 1936 to 1949, a period in which I had many duties that I did not neglect, and many other interests as a learner and teacher that often absorbed me. The delay was, of course, also increased by the outbreak of war in 1939, by the end of which year the tale had not yet reached the end of Book One. In spite of the darkness of the next five years I found that the story could not now be wholly abandoned, and I plodded on, mostly by night, till I stood by Balin's tomb in Moria. There I halted for a long while. It was almost a year later when I went on and so came to Lothlorien and the Great River late in 1941. In the next year I wrote the first drafts of the matter that now stands as Book Three, and the beginnings of chapters I and III of Book Five; and there as the beacons flared in Anorien and Theoden came to Harrowdale I stopped. Foresight had failed and there was no time for thought.
|
||||
|
||||
It was during 1944 that, leaving the loose ends and perplexities of a war which it was my task to conduct, or at least to report, 1 forced myself to tackle the journey of Frodo to Mordor. These chapters, eventually to become Book Four, were written and sent out as a serial to my son, Christopher, then in South Africa with the RAF. Nonetheless it took another five years before the tale was brought to its present end; in that time I changed my house, my chair, and my college, and the days though less dark were no less laborious. Then when the 'end' had at last been reached the whole story had to be revised, and indeed largely re-written backwards. And it had to be typed, and re-typed: by me; the cost of professional typing by the ten-fingered was beyond my means.
|
||||
|
||||
The Lord of the Ringshas been read by many people since it finally appeared in print; and I should like to say something here with reference to the many opinions or guesses that I have received or have read concerning the motives and meaning of the tale. The prime motive was the desire of a tale-teller to try his hand at a really long story that would hold the attention of readers, amuse them, delight them, and at times maybe excite them or deeply move them. As a guide I had only my own feelings for what is appealing or moving, and for many the guide was inevitably often at fault. Some who have read the book, or at any rate have reviewed it, have found it boring, absurd, or contemptible; and I have no cause to complain, since I have similar opinions of their works, or of the kinds of writing that they evidently prefer. But even from the points of view of many who have enjoyed my story there is much that fails to please. It is perhaps not possible in a long tale to please everybody at all points, nor to displease everybody at the same points; for I find from the letters that I have received that the passages or chapters that are to some a blemish are all by others specially approved. The most critical reader of all, myself, now finds many defects, minor and major, but being fortunately under no obligation either to review the book or to write it again, he will pass over these in silence, except one that has been noted by others: the book is too short.
|
||||
|
||||
As for any inner meaning or 'message', it has in the intention of the author none. It is neither allegorical nor topical. As the story grew it put down roots (into the past) and threw out unexpected branches: but its main theme was settled from the outset by the inevitable choice of the Ring as the link between it andThe Hobbit. The crucial chapter, "The Shadow of the Past', is one of the oldest parts of the tale. It was written long before the foreshadow of 1939 had yet become a threat of inevitable disaster, and from that point the story would have developed along essentially the same lines, if that disaster had been averted. Its sources are things long before in mind, or in some cases already written, and little or nothing in it was modified by the war that began in 1939 or its sequels.
|
||||
|
||||
The real war does not resemble the legendary war in its process or its conclusion. If it had inspired or directed the development of the legend, then certainly the Ring would have been seized and used against Sauron; he would not have been annihilated but enslaved, and Barad-dur would not have been destroyed but occupied. Saruman, failing to get possession of the Ring, would m the confusion and treacheries of the time have found in Mordor the missing links in his own researches into Ring-lore, and before long he would have made a Great Ring of his own with which to challenge the self-styled Ruler of Middle-earth. In that conflict both sides would have held hobbits in hatred and contempt: they would not long have survived even as slaves.
|
||||
|
||||
Other arrangements could be devised according to the tastes or views of those who like allegory or topical reference. But I cordially dislike allegory in all its manifestations, and always have done so since I grew old and wary enough to detect its presence. I much prefer history, true or feigned, with its varied applicability to the thought and experience of readers. I think that many confuse 'applicability' with 'allegory'; but the one resides in the freedom of the reader, and the other in the purposed domination of the author.
|
||||
|
||||
An author cannot of course remain wholly unaffected by his experience, but the ways in which a story-germ uses the soil of experience are extremely complex, and attempts to define the process are at best guesses from evidence that is inadequate and ambiguous. It is also false, though naturally attractive, when the lives of an author and critic have overlapped, to suppose that the movements of thought or the events of times common to both were necessarily the most powerful influences. One has indeed personally to come under the shadow of war to feel fully its oppression; but as the years go by it seems now often forgotten that to be caught in youth by 1914 was no less hideous an experience than to be involved in 1939 and the following years. By 1918 all but one of my close friends were dead. Or to take a less grievous matter: it has been supposed by some that "The Scouring of the Shire' reflects the situation in England at the time when I was finishing my tale. It does not. It is an essential part of the plot, foreseen from the outset, though in the event modified by the character of Saruman as developed in the story without, need I say, any allegorical significance or contemporary political reference whatsoever. It has indeed some basis in experience, though slender (for the economic situation was entirely different), and much further back. The country in which I lived in childhood was being shabbily destroyed before I was ten, in days when motor-cars were rare objects (I had never seen one) and men were still building suburban railways. Recently I saw in a paper a picture of the last decrepitude of the once thriving corn-mill beside its pool that long ago seemed to me so important. I never liked the looks of the Young miller, but his father, the Old miller, had a black beard, and he was not named Sandyman.
|
||||
|
||||
The Lord of the Ringsis now issued in a new edition, and the opportunity has been taken of revising it. A number of errors and inconsistencies that still remained in the text have been corrected, and an attempt has been made to provide information on a few points which attentive readers have raised. I have considered all their comments and enquiries, and if some seem to have been passed over that may be because I have failed to keep my notes in order; but many enquiries could only be answered by additional appendices, or indeed by the production of an accessory volume containing much of the material that I did not include in the original edition, in particular more detailed linguistic information. In the meantime this edition offers this Foreword, an addition to the Prologue, some notes, and an index of the names of persons and places. This index is in intention complete in items but not in references, since for the present purpose it has been necessary to reduce its bulk. A complete index, making full use of the material prepared for me by Mrs. N. Smith, belongs rather to the accessory volume.
|
||||
|
||||
Prologue
|
||||
|
||||
This book is largely concerned with Hobbits, and from its pages a reader may discover much of their character and a little of their history. Further information will also be found in the selection from the Red Book of Westmarch that has already been published, under the title ofThe Hobbit . That story was derived from the earlier chapters of the Red Book, composed by Bilbo himself, the first Hobbit to become famous in the world at large, and called by himThere and Back Again, since they told of his journey into the East and his return: an adventure which later involved all the Hobbits in the great events of that Age that are here related.
|
||||
|
||||
Many, however, may wish to know more about this remarkable people from the outset, while some may not possess the earlier book. For such readers a few notes on the more important points are here collected from Hobbit-lore, and the first adventure is briefly recalled.
|
||||
|
||||
Hobbits are an unobtrusive but very ancient people, more numerous formerly than they are today; for they love peace and quiet and good tilled earth: a well-ordered and well-farmed countryside was their favourite haunt. They do not and did not understand or like machines more complicated than a forge-bellows, a water-mill, or a hand-loom, though they were skilful with tools. Even in ancient days they were, as a rule, shy of 'the Big Folk', as they call us, and now they avoid us with dismay and are becoming hard to find. They are quick of hearing and sharp-eyed, and though they are inclined to be fat and do not hurry unnecessarily, they are nonetheless nimble and deft in their movements. They possessed from the first the art of disappearing swiftly and silently, when large folk whom they do not wish to meet come blundering by; and this an they have developed until to Men it may seem magical. But Hobbits have never, in fact, studied magic of any kind, and their elusiveness is due solely to a professional skill that heredity and practice, and a close friendship with the earth, have rendered inimitable by bigger and clumsier races.
|
||||
|
||||
For they are a little people, smaller than Dwarves: less tout and stocky, that is, even when they are not actually much shorter. Their height is variable, ranging between two and four feet of our measure. They seldom now reach three feet; but they hive dwindled, they say, and in ancient days they were taller. According to the Red Book, Bandobras Took (Bullroarer), son of Isengrim the Second, was four foot five and able to ride a horse. He was surpassed in all Hobbit records only by two famous characters of old; but that curious matter is dealt with in this book.
|
||||
|
||||
As for the Hobbits of the Shire, with whom these tales are concerned, in the days of their peace and prosperity they were a merry folk. They dressed in bright colours, being notably fond of yellow and green; but they seldom wore shoes, since their feet had tough leathery soles and were clad in a thick curling hair, much like the hair of their heads, which was commonly brown. Thus, the only craft little practised among them was shoe-making; but they had long and skilful fingers and could make many other useful and comely things. Their faces were as a rule good-natured rather than beautiful, broad, bright-eyed, red-cheeked, with mouths apt to laughter, and to eating and drinking. And laugh they did, and eat, and drink, often and heartily, being fond of simple jests at all times, and of six meals a day (when they could get them). They were hospitable and delighted in parties, and in presents, which they gave away freely and eagerly accepted.
|
||||
|
||||
It is plain indeed that in spite of later estrangement Hobbits are relatives of ours: far nearer to us than Elves, or even than Dwarves. Of old they spoke the languages of Men, after their own fashion, and liked and disliked much the same things as Men did. But what exactly our relationship is can no longer be discovered. The beginning of Hobbits lies far back in the Elder Days that are now lost and forgotten. Only the Elves still preserve any records of that vanished time, and their traditions are concerned almost entirely with their own history, in which Men appear seldom and Hobbits are not mentioned at all. Yet it is clear that Hobbits had, in fact, lived quietly in Middle-earth for many long years before other folk became even aware of them. And the world being after all full of strange creatures beyond count, these little people seemed of very little importance. But in the days of Bilbo, and of Frodo his heir, they suddenly became, by no wish of their own, both important and renowned, and troubled the counsels of the Wise and the Great.
|
||||
|
||||
Those days, the Third Age of Middle-earth, are now long past, and the shape of all lands has been changed; but the regions in which Hobbits then lived were doubtless the same as those in which they still linger: the North-West of the Old World, east of the Sea. Of their original home the Hobbits in Bilbo's time preserved no knowledge. A love of learning (other than genealogical lore) was far from general among them, but there remained still a few in the older families who studied their own books, and even gathered reports of old times and distant lands from Elves, Dwarves, and Men. Their own records began only after the settlement of the Shire, and their most ancient legends hardly looked further back than their Wandering Days. It is clear, nonetheless, from these legends, and from the evidence of their peculiar words and customs, that like many other folk Hobbits had in the distant past moved westward. Their earliest tales seem to glimpse a time when they dwelt in the upper vales of Anduin, between the eaves of Greenwood the Great and the Misty Mountains. Why they later undertook the hard and perilous crossing of the mountains into Eriador is no longer certain. Their own accounts speak of the multiplying of Men in the land, and of a shadow that fell on the forest, so that it became darkened and its new name was Mirkwood.
|
||||
|
||||
Before the crossing of the mountains the Hobbits had already become divided into three somewhat different breeds: Harfoots, Stoors, and Fallohides. The Harfoots were browner of skin, smaller, and shorter, and they were beardless and bootless; their hands and feet were neat and nimble; and they preferred highlands and hillsides. The Stoors were broader, heavier in build; their feet and hands were larger, and they preferred flat lands and riversides. The Fallohides were fairer of skin and also of hair, and they were taller and slimmer than the others; they were lovers of trees and of woodlands.
|
||||
|
||||
The Harfoots had much to do with Dwarves in ancient times, and long lived in the foothills of the mountains. They moved westward early, and roamed over Eriador as far as Weathertop while the others were still in the Wilderland. They were the most normal and representative variety of Hobbit, and far the most numerous. They were the most inclined to settle in one place, and longest preserved their ancestral habit of living in tunnels and holes.
|
||||
|
||||
The Stoors lingered long by the banks of the Great River Anduin, and were less shy of Men. They came west after the Harfoots and followed the course of the Loudwater southwards; and there many of them long dwelt between Tharbad and the borders of Dunland before they moved north again.
|
||||
|
||||
The Fallohides, the least numerous, were a northerly branch. They were more friendly with Elves than the other Hobbits were, and had more skill in language and song than in handicrafts; and of old they preferred hunting to tilling. They crossed the mountains north of Rivendell and came down the River Hoarwell. In Eriador they soon mingled with the other kinds that had preceded them, but being somewhat bolder and more adventurous, they were often found as leaders or chieftains among clans of Harfoots or Stoors. Even in Bilbo's time the strong Fallohidish strain could still be noted among the greater families, such as the Tooks and the Masters of Buckland.
|
||||
|
||||
In the westlands of Eriador, between the Misty Mountains and the Mountains of Lune, the Hobbits found both Men and Elves. Indeed, a remnant still dwelt there of the Dunedain, the kings of Men that came over the Sea out of Westernesse; but they were dwindling fast and the lands of their North Kingdom were falling far and wide into waste. There was room and to spare for incomers, and ere long the Hobbits began to settle in ordered communities. Most of their earlier settlements had long disappeared and been forgotten in Bilbo's time; but one of the first to become important still endured, though reduced in size; this was at Bree and in the Chetwood that lay round about, some forty miles east of the Shire.
|
||||
|
||||
It was in these early days, doubtless, that the Hobbits learned their letters and began to write after the manner of the Dunedain, who had in their turn long before learned the art from the Elves. And in those days also they forgot whatever languages they had used before, and spoke ever after the Common Speech, the Westron as it was named, that was current through all the lands of the kings from Arnor to Gondor, and about all the coasts of the Sea from Belfalas to Lune. Yet they kept a few words of their own, as well as their own names of months and days, and a great store of personal names out of the past.
|
||||
|
||||
About this time legend among the Hobbits first becomes history with a reckoning of years. For it was in the one thousand six hundred and first year of the Third Age that the Fallohide brothers, Marcho and Blanco, set out from Bree; and having obtained permission from the high king at Fornost, they crossed the brown river Baranduin with a great following of Hobbits. They passed over the Bridge of Stonebows, that had been built in the days of the power of the North Kingdom, and they took ail the land beyond to dwell in, between the river and the Far Downs. All that was demanded of them was that they should keep the Great Bridge in repair, and all other bridges and roads, speed the king's messengers, and acknowledge his lordship.
|
||||
|
||||
Thus began theShire-reckoning, for the year of the crossing of the Brandywine (as the Hobbits turned the name) became Year One of the Shire, and all later dates were reckoned from it. At once the western Hobbits fell in love with their new land, and they remained there, and soon passed once more out of the history of Men and of Elves. While there was still a king they were in name his subjects, but they were, in fact, ruled by their own chieftains and meddled not at all with events in the world outside. To the last battle at Fornost with the Witch-lord of Angmar they sent some bowmen to the aid of the king, or so they maintained, though no tales of Men record it. But in that war the North Kingdom ended; and then the Hobbits took the land for their own, and they chose from their own chiefs a Thain to hold the authority of the king that was gone. There for a thousand years they were little troubled by wars, and they prospered and multiplied after the Dark Plague (S.R. 37) until the disaster of the Long Winter and the famine that followed it. Many thousands then perished, but the Days of Dearth (1158-60) were at the time of this tale long past and the Hobbits had again become accustomed to plenty. The land was rich and kindly, and though it had long been deserted when they entered it, it had before been well tilled, and there the king had once had many farms, cornlands, vineyards, and woods.
|
||||
|
||||
Forty leagues it stretched from the Far Downs to the Brandywine Bridge, and fifty from the northern moors to the marshes in the south. The Hobbits named it the Shire, as the region of the authority of their Thain, and a district of well-ordered business; and there in that pleasant comer of the world they plied their well-ordered business of living, and they heeded less and less the world outside where dark things moved, until they came to think that peace and plenty were the rule in Middle-earth and the right of all sensible folk. They forgot or ignored what little they had ever known of the Guardians, and of the labours of those that made possible the long peace of the Shire. They were, in fact, sheltered, but they had ceased to remember it.
|
||||
|
||||
At no time had Hobbits of any kind been warlike, and they had never fought among themselves. In olden days they had, of course, been often obliged to fight to maintain themselves in a hard world; but in Bilbo's time that was very ancient history. The last battle, before this story opens, and indeed the only one that had ever been fought within the borders of the Shire, was beyond living memory: the Battle of Greenfields, S.R. 1147, in which Bandobras Took routed an invasion of Orcs. Even the weathers had grown milder, and the wolves that had once come ravening out of the North in bitter white winters were now only a grandfather's tale. So, though there was still some store of weapons in the Shire, these were used mostly as trophies, hanging above hearths or on walls, or gathered into the museum at Michel Delving. The Mathom-house it was called; for anything that Hobbits had no immediate use for, but were unwilling to throw away, they called amathom . Their dwellings were apt to become rather crowded with mathoms, and many of the presents that passed from hand to hand were of that son.
|
||||
|
||||
Nonetheless, ease and peace had left this people still curiously tough. They were, if it came to it, difficult to daunt or to kill; and they were, perhaps, so unwearyingly fond of good things not least because they could, when put to it, do without them, and could survive rough handling by grief, foe, or weather in a way that astonished those who did not know them well and looked no further than their bellies and their well-fed faces. Though slow to quarrel, and for sport killing nothing that lived, they were doughty at bay, and at need could still handle arms. They shot well with the bow, for they were keen-eyed and sure at the mark. Not only with bows and arrows. If any Hobbit stooped for a stone, it was well to get quickly under cover, as all trespassing beasts knew very well.
|
||||
|
||||
All Hobbits had originally lived in holes in the ground, or so they believed, and in such dwellings they still felt most at home; but in the course of time they had been obliged to adopt other forms of abode. Actually in the Shire in Bilbo's days it was, as a rule, only the richest and the poorest Hobbits that maintained the old custom. The poorest went on living in burrows of the most primitive kind, mere holes indeed, with only one window or none; while the well-to-do still constructed more luxurious versions of the simple diggings of old. But suitable sites for these large and ramifying tunnels (orsmials as they called them) were not everywhere to be found; and in the flats and the low-lying districts the Hobbits, as they multiplied, began to build above ground. Indeed, even in the hilly regions and the older villages, such as Hobbiton or Tuckborough, or in the chief township of the Shire, Michel Delving on the White Downs, there were now many houses of wood, brick, or stone. These were specially favoured by millers, smiths, ropers, and cartwrights, and others of that sort; for even when they had holes to live in. Hobbits had long been accustomed to build sheds and workshops.
|
||||
|
||||
The habit of building farmhouses and barns was said to have begun among the inhabitants of the Marish down by the Brandywine. The Hobbits of that quarter, the Eastfarthing, were rather large and heavy-legged, and they wore dwarf-boots in muddy weather. But they were well known to be Stoors in a large part of their blood, as indeed was shown by the down that many grew on their chins. No Harfoot or Fallohide had any trace of a beard. Indeed, the folk of the Marish, and of Buckland, east of the River, which they afterwards occupied, came for the most part later into the Shire up from south-away; and they still had many peculiar names and strange words not found elsewhere in the Shire.
|
||||
|
||||
It is probable that the craft of building, as many other crafts beside, was derived from the Dunedain. But the Hobbits may have learned it direct from the Elves, the teachers of Men in their youth. For the Elves of the High Kindred had not yet forsaken Middle-earth, and they dwelt still at that time at the Grey Havens away to the west, and in other places within reach of the Shire. Three Elf-towers of immemorial age were still to be seen on the Tower Hills beyond the western marches. They shone far off in the moonlight. The tallest was furthest away, standing alone upon a green mound. The Hobbits of the Westfarthing said that one could see the Sea from the lop of that tower; but no Hobbit had ever been known to climb it. Indeed, few Hobbits had ever seen or sailed upon the Sea, and fewer still had ever returned to report it. Most Hobbits regarded even rivers and small boats with deep misgivings, and not many of them could swim. And as the days of the Shire lengthened they spoke less and less with the Elves, and grew afraid of them, and distrustful of those that had dealings with them; and the Sea became a word of fear among them, and a token of death, and they turned their faces away from the hills in the west.
|
||||
|
||||
The craft of building may have come from Elves or Men, but the Hobbits used it in their own fashion. They did not go in for towers. Their houses were usually long, low, and comfortable. The oldest kind were, indeed, no more than built imitations ofsmials, thatched with dry grass or straw, or roofed with turves, and having walls somewhat bulged. That stage, however, belonged to the early days of the Shire, and hobbit-building had long since been altered, improved by devices, learned from Dwarves, or discovered by themselves. A preference for round windows, and even round doors, was the chief remaining peculiarity of hobbit-architecture.
|
||||
|
||||
The houses and the holes of Shire-hobbits were often large, and inhabited by large families. (Bilbo and Frodo Baggins were as bachelors very exceptional, as they were also in many other ways, such as their friendship with the Elves.) Sometimes, as in the case of the Tooks of Great Smials, or the Brandybucks of Brandy Hall, many generations of relatives lived in (comparative) peace together in one ancestral and many-tunnelled mansion. All Hobbits were, in any case, clannish and reckoned up their relationships with great care. They drew long and elaborate family-trees with innumerable branches. In dealing with Hobbits it is important to remember who is related to whom, and in what degree. It would be impossible in this book to set out a family-tree that included even the more important members of the more important families at the time which these tales tell of. The genealogical trees at the end of the Red Book of Westmarch are a small book in themselves, and all but Hobbits would find them exceedingly dull. Hobbits delighted in such things, if they were accurate: they liked to have books filled with things that they already knew, set out fair and square with no contradictions.
|
||||
|
||||
There is another astonishing thing about Hobbits of old that must be mentioned, an astonishing habit: they imbibed or inhaled, through pipes of clay or wood, the smoke of the burning leaves of a herb, which they calledpipe-weed orleaf, a variety probably ofNicotiana. A great deal of mystery surrounds the origin of this peculiar custom, or 'art' as the Hobbits preferred to call it. All that could be discovered about it in antiquity was put together by Meriadoc Brandybuck (later Master of Buckland), and since he and the tobacco of the Southfarthing play a part in the history that follows, his remarks in the introduction to hisHerblore of the Shire may be quoted.
|
||||
|
||||
"This," he says, 'is the one art that we can certainly claim to be our own invention. When Hobbits first began to smoke is not known, all the legends and family histories take it for granted; for ages folk in the Shire smoked various herbs, some fouler, some sweeter. But all accounts agree that Tobold Hornblower of Longbottom in the Southfarthing first grew the true pipe-weed in his gardens in the days of Isengrim the Second, about the year 1070 of Shire-reckoning. The best home-grown still comes from that district, especially the varieties now known as Longbottom Leaf, Old Toby, and Southern Star.
|
||||
|
||||
"How Old Toby came by the plant is not recorded, for to his dying day he would not tell. He knew much about herbs, but he was no traveller. It is said that in his youth he went often to Bree, though he certainly never went further from the Shire than that. It is thus quite possible that he learned of this plant in Bree, where now, at any rate, it grows well on the south slopes of the hill. The Bree-hobbits claim to have been the first actual smokers of the pipe-weed. They claim, of course, to have done everything before the people of the Shire, whom they refer to as "colonists"; but in this case their claim is, I think, likely to be true. And certainly it was from Bree that the art of smoking the genuine weed spread in the recent centuries among Dwarves and such other folk, Rangers, Wizards, or wanderers, as still passed to and fro through that ancient road-meeting. The home and centre of the an is thus to be found in the old inn of Bree,The Prancing Pony, that has been kept by the family of Butterbur from time beyond record.
|
||||
|
||||
"All the same, observations that I have made on my own many journeys south have convinced me that the weed itself is not native to our parts of the world, but came northward from the lower Anduin, whither it was, I suspect, originally brought over Sea by the Men of Westernesse. It grows abundantly in Gondor, and there is richer and larger than in the North, where it is never found wild, and flourishes only in warm sheltered places like Longbottom. The Men of Gondor call itsweet galenas, and esteem it only for the fragrance of its flowers. From that land it must have been carried up the Greenway during the long centuries between the coming of Elendil and our own day. But even the Dunedain of Gondor allow us this credit: Hobbits first put it into pipes. Not even the Wizards first thought of that before we did. Though one Wizard that I knew took up the art long ago, and became as skilful in it as in all other things that he put his mind to."
|
||||
|
||||
The Shire was divided into four quarters, the Farthings already referred to. North, South, East, and West; and these again each into a number of folklands, which still bore the names of some of the old leading families, although by the time of this history these names were no longer found only in their proper folklands. Nearly all Tooks still lived in the Tookland, but that was not true of many other families, such as the Bagginses or the Boffins. Outside the Farthings were the East and West Marches: the Buckland (see beginning of Chapter V, Book I); and the Westmarch added to the Shire in S.R. 1462.
|
||||
|
||||
The Shire at this time had hardly any 'government'. Families for the most part managed their own affairs. Growing food and eating it occupied most of their time. In other matters they were, as a rule, generous and not greedy, but contented and moderate, so that estates, farms, workshops, and small trades tended to remain unchanged for generations.
|
||||
|
||||
There remained, of course, the ancient tradition concerning the high king at Fornost, or Norbury as they called it, away north of the Shire. But there had been no king for nearly a thousand years, and even the ruins of Kings' Norbury were covered with grass. Yet the Hobbits still said of wild folk and wicked things (such as trolls) that they had not heard of the king. For they attributed to the king of old all their essential laws; and usually they kept the laws of free will, because they were The Rules (as they said), both ancient and just.
|
||||
|
||||
It is true that the Took family had long been pre-eminent; for the office of Thain had passed to them (from the Oldbucks) some centuries before, and the chief Took had borne that title ever since. The Thain was the master of the Shire-moot, and captain of the Shire-muster and the Hobbitry-in-arms, but as muster and moot were only held in times of emergency, which no longer occurred, the Thainship had ceased to be more than a nominal dignity. The Took family was still, indeed, accorded a special respect, for it remained both numerous and exceedingly wealthy, and was liable to produce in every generation strong characters of peculiar habits and even adventurous temperament. The latter qualities, however, were now rather tolerated (in the rich) than generally approved. The custom endured, nonetheless, of referring to the head of the family as The Took, and of adding to his name, if required, a number: such as Isengrim the Second, for instance.
|
||||
|
||||
The only real official in the Shire at this date was the Mayor of Michel Delving (or of the Shire), who was elected every seven years at the Free Fair on the White Downs at the Lithe, that is at Midsummer. As mayor almost his only duty was to preside at banquets, given on the Shire-holidays, which occurred at frequent intervals. But the offices of Postmaster and First Shirriff were attached to the mayoralty, so that he managed both the Messenger Service and the Watch. These were the only Shire-services, and the Messengers were the most numerous, and much the busier of the two. By no means all Hobbits were lettered, but those who were wrote constantly to all their friends (and a selection of their relations) who lived further off than an afternoon's walk.
|
||||
|
||||
The Shirriffs was the name that the Hobbits gave to their police, or the nearest equivalent that they possessed. They had, of course, no uniforms (such things being quite unknown), only a feather in their caps; and they were in practice rather haywards than policemen, more concerned with the strayings of beasts than of people. There were in all the Shire only twelve of them, three in each Farthing, for Inside Work. A rather larger body, varying at need, was employed to 'beat the bounds', and to see that Outsiders of any kind, great or small, did not make themselves a nuisance.
|
||||
|
||||
At the time when this story begins the Bounders, as they were called, had been greatly increased. There were many reports and complaints of strange persons and creatures prowling about the borders, or over them: the first sign that all was not quite as it should be, and always had been except in tales and legends of long ago. Few heeded the sign, and not even Bilbo yet had any notion of what it portended. Sixty years had passed since he set out on his memorable journey, and he was old even for Hobbits, who reached a hundred as often as not; but much evidently still remained of the considerable wealth that he had brought back. How much or how little he revealed to no one, not even to Frodo his favourite 'nephew'. And he still kept secret the ring that he bad found.
|
||||
|
||||
As is told in The Hobbit, there came one day to Bilbo's door the great Wizard, Gandalf the Grey, and thirteen dwarves with him: none other, indeed, than Thorin Oakenshield, descendant of kings, and his twelve companions in exile. With them he set out, to his own lasting astonishment, on a morning of April, it being then the year 1341 Shire-reckoning, on a quest of great treasure, the dwarf-hoards of the Kings under the Mountain, beneath Erebor in Dale, far off in the East. The quest was successful, and the Dragon that guarded the hoard was destroyed. Yet, though before all was won the Battle of Five Armies was fought, and Thorin was slain, and many deeds of renown were done, the matter would scarcely have concerned later history, or earned more than a note in the long annals of the Third Age, but for an 'accident' by the way. The party was assailed by Orcs in a high pass of the Misty Mountains as they went towards Wilderland; and so it happened that Bilbo was lost for a while in the black orc-mines deep under the mountains, and there, as he groped in vain in the dark, he put his hand on a ring, lying on the floor of a tunnel. He put it in his pocket. It seemed then like mere luck.
|
||||
|
||||
Trying to find his way out. Bilbo went on down to the roots of the mountains, until he could go no further. At the bottom of the tunnel lay a cold lake far from the light, and on an island of rock in the water lived Gollum. He was a loathsome little creature: he paddled a small boat with his large flat feet, peering with pale luminous eyes and catching blind fish with his long fingers, and eating them raw. He ate any living thing, even orc, if he could catch it and strangle it without a struggle. He possessed a secret treasure that had come to him long ages ago, when he still lived in the light: a ring of gold that made its wearer invisible. It was the one thing he loved, his 'precious', and he talked to it, even when it was not with him. For he kept it hidden safe in a hole on his island, except when he was hunting or spying on the ores of the mines.
|
||||
|
||||
Maybe he would have attacked Bilbo at once, if the ring had been on him when they met; but it was not, and the hobbit held in his hand an Elvish knife, which served him as a sword. So to gain time Gollum challenged Bilbo to the Riddle-game, saying that if he asked a riddle which Bilbo could not guess, then he would kill him and eat him; but if Bilbo defeated him, then he would do as Bilbo wished: he would lead him to a way out of the tunnels.
|
||||
|
||||
Since he was lost in the dark without hope, and could neither go on nor back. Bilbo accepted the challenge; and they asked one another many riddles. In the end Bilbo won the game, more by luck (as it seemed) than by wits; for he was stumped at last for a riddle to ask, and cried out, as his hand came upon the ring he lad picked up and forgotten:What haw I got in my pocket? This Gollum failed to answer, though he demanded three guesses.
|
||||
|
||||
The Authorities, it is true, differ whether this last question was a mere 'question' and not a 'riddle' according to the strict rules of the Game; but all agree that, after accepting it and trying to guess the answer, Gollum was bound by his promise. And Bilbo pressed him to keep his word; for the thought came to him that this slimy creature might prove false, even though such promises were held sacred, and of old all but the wickedest things feared to break them. But after ages alone in the dark Gollum's heart was black, and treachery was in it. He slipped away, and returned to the island, of which Bilbo knew nothing, not far off in the dark water. There, he thought, lay his ring. He was hungry now, and angry, and once his 'precious' was with him he would not fear any weapon at all.
|
||||
|
||||
But the ring was not on the island; he had lost it, it was gone. His screech sent a shiver down Bilbo's back, though he did not yet understand what had happened. But Gollum had at last leaped to a guess, too late.What has it got in its pocketses? he cried. The light in his eyes was like a green flame as he sped back to murder the hobbit and recover his 'precious'. Just in time Bilbo saw his peril, and he fled blindly up the passage away from the water; and once more he was saved by his luck. For just as he ran he put his hand in his pocket, and the ring slipped quietly on to his finger. So it was that Gollum passed him without seeing him, and went to guard the way out, lest the 'thief' should escape. Warily Bilbo followed him, as he went along, cursing, and talking to himself about his 'precious'; from which talk at last even Bilbo guessed the truth, and hope came to him in the darkness: he himself had found the marvellous ring and a chance of escape from the orcs and from Gollum.
|
||||
|
||||
At length they came to a halt before an unseen opening that led to the lower gates of the mines, on the eastward side of the mountains. There Gollum crouched at bay, smelling and listening; and Bilbo was tempted to slay him with his sword. But pity stayed him, and though he kept the ring, in which his only hope lay, he would not use it to help him kill the wretched creature at a disadvantage. In the end, gathering his courage, he leaped over Gollum in the dark, and fled away down the passage, pursued by his enemy's cries of hate and despair:Thief, thief! Baggins! We hates it for ever!
|
||||
|
||||
Now it is a curious fact that this is not the story as Bilbo first told it to his companions. To them his account was that Gollum had promised to give him apresent, if he won the game; but when Gollum went to fetch it from his island he found the treasure was gone: a magic ring, which had been given to him long ago on his birthday. Bilbo guessed that this was the very ring that he had found, and as he had won the game, it was already his by right. But being in a tight place, he said nothing about it, and made Gollum show him the way out, as a reward instead of a present. This account Bilbo set down in his memoirs, and he seems never to have altered it himself, not even after the Council of Elrond. Evidently it still appeared in the original Red Book, as it did in several of the copies and abstracts. But many copies contain the true account (as an alternative), derived no doubt from notes by Frodo or Samwise, both of whom learned the truth, though they seem to have been unwilling to delete anything actually written by the old hobbit himself.
|
||||
|
||||
Gandalf, however, disbelieved Bilbo's first story, as soon as he heard it, and he continued to be very curious about the ring. Eventually he got the true tale out of Bilbo after much questioning, which for a while strained their friendship; but the wizard seemed to think the truth important. Though he did not say so to Bilbo, he also thought it important, and disturbing, to find that the good hobbit had not told the truth from the first: quite contrary to his habit. The idea of a 'present' was not mere hobbitlike invention, all the same. It was suggested to Bilbo, as he confessed, by Gollum's talk that he overheard; for Gollum did, in fact, call the ring his 'birthday present', many times. That also Gandalf thought strange and suspicious; but he did not discover the truth in this point for many more years, as will be seen in this book.
|
||||
|
||||
Of Bilbo's later adventures little more need be said here. With the help of the ring he escaped from the orc-guards at the gate and rejoined his companions. He used the ring many times on his quest, chiefly for the help of his friends; but he kept it secret from them as long as he could. After his return to his home he never spoke of it again to anyone, save Gandalf and Frodo; and no one else in the Shire knew of its existence, or so he believed. Only to Frodo did he show the account of his Journey that he was writing.
|
||||
|
||||
His sword, Sting, Bilbo hung over his fireplace, and his coat of marvellous mail, the gift of the Dwarves from the Dragon-hoard, he lent to a museum, to the Michel Delving Mathom-house in fact. But he kept in a drawer at Bag End the old cloak and hood that he had worn on his travels; and the ring, secured by a fine chain, remained in his pocket.
|
||||
|
||||
He returned to his home at Bag End on June the 22nd in his fifty-second year (S.R. 1342), and nothing very notable occurred in the Shire until Mr. Baggins began the preparations for the celebration of his hundred-and-eleventh birthday (S.R. 1401). At this point this History begins.
|
||||
|
||||
At the end of the Third Age the part played by the Hobbits in the great events that led to the inclusion of the Shire in the Reunited Kingdom awakened among them a more widespread interest in their own history; and many of their traditions, up to that time still mainly oral, were collected and Written down. The greater families were also concerned with events in the Kingdom at large, and many of their members studied its ancient histories and legends. By the end of the first century of the Fourth Age there were already to be found in the Shire several libraries that contained many historical books and records.
|
||||
|
||||
The largest of these collections were probably at Undertowers, at Great Smials, and at Brandy Hall. This account of the end of the Third Age is drawn mainly from the Red Book of Westmarch. That most important source for the history of the War of the Ring was so called because it was long preserved at Undertowers, the home of the Fairbairns, Wardens of the Westmarch. It was in origin Bilbo's private diary, which he took with him to Rivendell. Frodo brought it back to the Shire, together with many loose leaves of notes, and during S.R. 1420-1 he nearly filled its pages with his account of the War. But annexed to it and preserved with it, probably m a single red case, were the three large volumes, bound in red leather, that Bilbo gave to him as a parting gift. To these four volumes there was added in Westmarch a fifth containing commentaries, genealogies, and various other matter concerning the hobbit members of the Fellowship.
|
||||
|
||||
The original Red Book has not been preserved, but many copies were made, especially of the first volume, for the use of the descendants of the children of Master Samwise. The most important copy, however, has a different history. It was kept at Great Smials, but it was written in Condor, probably at the request of the great-grandson of Peregrin, and completed in S.R. 1592 (F.A. 172). Its southern scribe appended this note: Findegil, King's Writer, finished this work in IV 172. It is an exact copy in all details of the Thain's Book m Minas Tirith. That book was a copy, made at the request of King Elessar, of the Red Book of the Periannath, and was brought to him by the Thain Peregrin when he retired to Gondor in IV 64.
|
||||
|
||||
The Thain's Book was thus the first copy made of the Red Book and contained much that was later omitted or lost. In Minas Tirith it received much annotation, and many corrections, especially of names, words, and quotations in the Elvish languages; and there was added to it an abbreviated version of those parts ofThe Tale of Aragorn and Arwen which lie outside the account of the War. The full tale is stated to have been written by Barahir, grandson of the Steward Faramir, some time after the passing of the King. But the chief importance of Findegil's copy is that it alone contains the whole of Bilbo's "Translations from the Elvish'. These three volumes were found to be a work of great skill and learning in which, between 1403 and 1418, he had used all the sources available to him in Rivendell, both living and written. But since they were little used by Frodo, being almost entirely concerned with the Elder Days, no more is said of them here.
|
||||
|
||||
Since Meriadoc and Peregrin became the heads of their great families, and at the same time kept up their connexions with Rohan and Gondor, the libraries at Bucklebury and Tuckborough contained much that did not appear in the Red Book. In Brandy Hall there were many works dealing with Eriador and the history of Rohan. Some of these were composed or begun by Meriadoc himself, though in the Shire he was chiefly remembered for hisHerblore of the Shire, and for hisReckoning of Years m which he discussed the relation of the calendars of the Shire and Bree to those of Rivendell, Gondor, and Rohan. He also wrote a short treatise onOld Words and Names in the Shire, having special interest in discovering the kinship with the language of the Rohirrim of such 'shire-words' asmathom and old elements in place names.
|
||||
|
||||
At Great Smials the books were of less interest to Shire-folk, though more important for larger history. None of them was written by Peregrin, but he and his successors collected many manuscripts written by scribes of Gondor: mainly copies or summaries of histories or legends relating to Elendil and his heirs. Only here in the Shire were to be found extensive materials for the history of Numenor and the arising of Sauron. It was probably at Great Smials thatThe Tale of Years was put together, with the assistance of material collected by Meriadoc. Though the dates given are often conjectural, especially for the Second Age, they deserve attention. It is probable that Meriadoc obtained assistance and information from Rivendell, which he visited more than once. There, though Elrond had departed, his sons long remained, together with some of the High-elven folk. It is said that Celeborn went to dwell there after the departure of Galadriel; but there is no record of the day when at last he sought the Grey Havens, and with him went the last living memory of the Elder Days in Middle-earth.
|
@ -1,21 +0,0 @@
|
||||
## Лабораторная работа 7. Вариант 5.
|
||||
### Задание
|
||||
Выбрать художественный текст(четные варианты –русскоязычный, нечетные –англоязычный)и обучить на нем рекуррентную
|
||||
нейронную сеть для решения задачи генерации. Подобрать архитектуру и параметры так, чтобы приблизиться к максимально
|
||||
осмысленному результату.
|
||||
|
||||
В завершении подобрать компромиссную архитектуру, справляющуюся достаточно хорошо с обоими видами текстов.
|
||||
|
||||
### Ход работы
|
||||
Для английской модели был взят пролог Властелина колец. Модель хоть им получилась удачнее, чем на русском, но время
|
||||
обучение составило чуть больше часа.
|
||||
|
||||
#### Результат rus
|
||||
здесь был человек прежде всего всего обманывает самого себя ибо он думает что успешно соврал а люди поняли и из
|
||||
деликатности промолчали промолчали промолчали промолчали промолчали какие его неудачи могут его постигнуть не тому
|
||||
помочь много ли людей не нуждаются в помощи помощи было врать врать врать молчания молчания а внести то
|
||||
|
||||
#### Результат eng
|
||||
the harfoots were browner of skin smaller and shorter and they were beardless and bootless their hands and feet were
|
||||
neat and nimble and they preferred highlands and hillsides the stoors were broader heavier in build their feet and
|
||||
hands were larger and they preferred flat lands and riversides
|
@ -1,70 +0,0 @@
|
||||
import numpy as np
|
||||
from keras.preprocessing.sequence import pad_sequences
|
||||
from keras.preprocessing.text import Tokenizer
|
||||
from keras.models import Sequential
|
||||
from keras.layers import Embedding, LSTM, Dense
|
||||
from keras.utils import to_categorical
|
||||
|
||||
with open('ru.txt', "r", encoding='utf-8') as file:
|
||||
text = file.read()
|
||||
|
||||
# Предварительная обработка текста (в зависимости от вашей задачи)
|
||||
|
||||
# Создание словаря для отображения слов в индексы и обратно
|
||||
tokenizer = Tokenizer()
|
||||
tokenizer.fit_on_texts([text])
|
||||
total_words = len(tokenizer.word_index) + 1
|
||||
|
||||
# Подготовка данных для обучения (в зависимости от вашей задачи)
|
||||
|
||||
input_sequences = []
|
||||
for line in text.split('\n'):
|
||||
token_list = tokenizer.texts_to_sequences([line])[0]
|
||||
for i in range(1, len(token_list)):
|
||||
n_gram_sequence = token_list[:i+1]
|
||||
input_sequences.append(n_gram_sequence)
|
||||
|
||||
max_sequence_length = max([len(x) for x in input_sequences])
|
||||
input_sequences = pad_sequences(input_sequences, maxlen=max_sequence_length, padding='pre')
|
||||
X, y = input_sequences[:,:-1],input_sequences[:,-1]
|
||||
y = to_categorical(y, num_classes=total_words)
|
||||
|
||||
# Определение архитектуры модели
|
||||
|
||||
model = Sequential()
|
||||
model.add(Embedding(total_words, 50, input_length=max_sequence_length-1))
|
||||
model.add(LSTM(100))
|
||||
model.add(Dense(total_words, activation='softmax'))
|
||||
|
||||
# Компиляция модели
|
||||
|
||||
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
|
||||
|
||||
# Обучение модели
|
||||
|
||||
model.fit(X, y, epochs=100, verbose=2)
|
||||
|
||||
# Генерация текста с использованием обученной модели
|
||||
|
||||
def generate_text(seed_text, next_words, model_, max_sequence_length):
|
||||
for _ in range(next_words):
|
||||
token_list = tokenizer.texts_to_sequences([seed_text])[0]
|
||||
token_list = pad_sequences([token_list], maxlen=max_sequence_length - 1, padding='pre')
|
||||
predicted_probs = model.predict(token_list, verbose=0)[0]
|
||||
predicted_index = np.argmax(predicted_probs)
|
||||
output_word = ""
|
||||
for word, index in tokenizer.word_index.items():
|
||||
if index == predicted_index:
|
||||
output_word = word
|
||||
break
|
||||
seed_text += " " + output_word
|
||||
|
||||
return seed_text
|
||||
|
||||
|
||||
# Пример генерации текста (замените seed_text и next_words на свои значения)
|
||||
seed_text = "здесь был"
|
||||
next_words = 50
|
||||
generated_text = generate_text(seed_text, next_words, model, max_sequence_length)
|
||||
|
||||
print(generated_text)
|
@ -1,9 +0,0 @@
|
||||
Когда человек сознательно или интуитивно выбирает себе в жизни какую-то цель, жизненную задачу, он невольно дает себе оценку. По тому, ради чего человек живет, можно судить и о его самооценке - низкой или высокой.
|
||||
Если человек живет, чтобы приносить людям добро, облегчать их страдания, давать людям радость, то он оценивает себя на уровне этой своей человечности. Он ставит себе цель, достойную человека.
|
||||
Только такая цель позволяет человеку прожить свою жизнь с достоинством и получить настоящую радость. Да, радость! Подумайте: если человек ставит себе задачей увеличивать в жизни добро, приносить людям счастье, какие неудачи могут его постигнуть? Не тому помочь? Но много ли людей не нуждаются в помощи?
|
||||
Если жить только для себя, своими мелкими заботами о собственном благополучии, то от прожитого не останется и следа. Если же жить для других, то другие сберегут то, чему служил, чему отдавал силы.
|
||||
Можно по-разному определять цель своего существования, но цель должна быть. Надо иметь и принципы в жизни. Одно правило в жизни должно быть у каждого человека, в его цели жизни, в его принципах жизни, в его поведении: надо прожить жизнь с достоинством, чтобы не стыдно было вспоминать.
|
||||
Достоинство требует доброты, великодушия, умения не быть эгоистом, быть правдивым, хорошим другом, находить радость в помощи другим.
|
||||
Ради достоинства жизни надо уметь отказываться от мелких удовольствий и немалых тоже… Уметь извиняться, признавать перед другими ошибку - лучше, чем врать.
|
||||
Обманывая, человек прежде всего обманывает самого себя, ибо он думает, что успешно соврал, а люди поняли и из деликатности промолчали.
|
||||
Жизнь - прежде всего творчество, но это не значит, что каждый человек, чтобы жить, должен родиться художником, балериной или ученым. Можно творить просто добрую атмосферу вокруг себя. Человек может принести с собой атмосферу подозрительности, какого-то тягостного молчания, а может внести сразу радость, свет. Вот это и есть творчество.
|
@ -1,57 +0,0 @@
|
||||
# Лабораторная 1
|
||||
|
||||
## Задание
|
||||
Сгенерируйте определенный тип данных и сравнить на нем 3 модели (по варианту 9). Построить графики, отобразить качество моделей, объяснить полученные результаты
|
||||
|
||||
## Данные
|
||||
|
||||
make_classification (n_samples=500, n_features=2, n_redundant=0, n_informative=2, random_state=rs, n_clusters_per_class=1)
|
||||
- Модели:
|
||||
- - Персептрон
|
||||
- - Многослойный персептрон с 10-ю нейронами в скрытом слое (alpha = 0.01)
|
||||
- - Многослойный персептрон со 100-а нейронами в скрытом слое (alpha =0.01)
|
||||
|
||||
## Описание Программы
|
||||
|
||||
|
||||
### Используемые библиотеки
|
||||
- scikit-learn
|
||||
- numpy
|
||||
- matplotlib
|
||||
|
||||
### Шаги программы
|
||||
|
||||
1. **Генерация данных:**
|
||||
- Используется функция `make_classification` из библиотеки scikit-learn.
|
||||
- Создаются два признака, и данные разделяются на два класса.
|
||||
- Используется 500 сэмплов.
|
||||
|
||||
2. **Разделение данных:**
|
||||
- Данные разделяются на обучающий и тестовый наборы с использованием `train_test_split` из scikit-learn.
|
||||
- Размер тестового набора установлен в 20% от общего размера.
|
||||
|
||||
3. **Создание моделей:**
|
||||
- Три модели создаются с использованием библиотеки scikit-learn:
|
||||
- Персептрон
|
||||
- Многослойный персептрон с 10 нейронами в скрытом слое
|
||||
- Многослойный персептрон с 100 нейронами в скрытом слое
|
||||
|
||||
4. **Обучение и Оценка:**
|
||||
- Каждая модель обучается на обучающем наборе данных.
|
||||
- Производится оценка каждой модели на тестовом наборе с использованием метрики точности (`accuracy`).
|
||||
|
||||
5. **Визуализация данных и Границ Решения:**
|
||||
- Для каждой модели строится график, на котором отображаются точки тестового набора и граница решения модели.
|
||||
- Каждый график снабжен названием, указывающим на модель и ее точность.
|
||||
|
||||
### Запуск программы
|
||||
- Склонировать или скачать код `main.py`.
|
||||
- Запустите файл в среде, поддерживающей выполнение Python.
|
||||
|
||||
### Результаты
|
||||
- Можно проанализировать точность на графиках и понять,
|
||||
что самая точная из 3 моделей оказалась Многослойный персептрон со 100-а нейронами в скрытом слое.
|
||||
- Многослойный персептрон со 100-а нейронами: 0.96
|
||||
- Многослойный персептрон с 10-ю нейронами: 0.90
|
||||
- Персептрон: 0.86
|
||||
|
@ -1,54 +0,0 @@
|
||||
import matplotlib.pyplot as plt
|
||||
import numpy as np
|
||||
from sklearn.datasets import make_classification
|
||||
from sklearn.model_selection import train_test_split
|
||||
from sklearn.linear_model import Perceptron
|
||||
from sklearn.neural_network import MLPClassifier
|
||||
from sklearn.metrics import accuracy_score
|
||||
|
||||
# Установите random_state, чтобы результаты были воспроизводимыми
|
||||
rs = 42
|
||||
|
||||
# Генерация данных
|
||||
X, y = make_classification(
|
||||
n_samples=500, n_features=2, n_redundant=0, n_informative=2,
|
||||
random_state=rs, n_clusters_per_class=1
|
||||
)
|
||||
|
||||
# Разделение данных на обучающий и тестовый наборы
|
||||
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=rs)
|
||||
|
||||
# Создание моделей
|
||||
models = [
|
||||
('Perceptron', Perceptron(random_state=rs)),
|
||||
('MLP (10 neurons)', MLPClassifier(hidden_layer_sizes=(10,), alpha=0.01, random_state=rs)),
|
||||
('MLP (100 neurons)', MLPClassifier(hidden_layer_sizes=(100,), alpha=0.01, random_state=rs))
|
||||
]
|
||||
|
||||
# Обучение и оценка моделей
|
||||
results = {}
|
||||
|
||||
plt.figure(figsize=(15, 5))
|
||||
|
||||
for i, (name, model) in enumerate(models, 1):
|
||||
plt.subplot(1, 3, i)
|
||||
model.fit(X_train, y_train)
|
||||
y_pred = model.predict(X_test)
|
||||
accuracy = accuracy_score(y_test, y_pred)
|
||||
results[name] = accuracy
|
||||
|
||||
# Разбиение точек на классы
|
||||
plt.scatter(X_test[:, 0], X_test[:, 1], c=y_test, cmap=plt.cm.Paired, edgecolors='k')
|
||||
|
||||
# Построение границы решения для каждой модели
|
||||
h = .02 # Шаг сетки
|
||||
x_min, x_max = X_test[:, 0].min() - 1, X_test[:, 0].max() + 1
|
||||
y_min, y_max = X_test[:, 1].min() - 1, X_test[:, 1].max() + 1
|
||||
xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))
|
||||
Z = model.predict(np.c_[xx.ravel(), yy.ravel()])
|
||||
Z = Z.reshape(xx.shape)
|
||||
plt.contourf(xx, yy, Z, cmap=plt.cm.Paired, alpha=0.8)
|
||||
|
||||
plt.title(f'{name}\nAccuracy: {accuracy:.2f}')
|
||||
|
||||
plt.show()
|
Before Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 23 KiB |
@ -1,60 +0,0 @@
|
||||
# Лабораторная 2
|
||||
## Вариант 9
|
||||
|
||||
## Задание
|
||||
Выполните ранжирование признаков с помощью указанных по вариантумоделей. Отобразите получившиеся значения\оценки каждого признака каждым методом\моделью и среднюю оценку. Проведите анализ получившихся результатов.
|
||||
## Модели
|
||||
|
||||
- Лассо (Lasso)
|
||||
- Сокращение признаков Случайными деревьями (Random Forest Regressor)
|
||||
- Линейная корреляция (f_regression)
|
||||
|
||||
## Описание Программы
|
||||
Данная программа решает задачу ранжирования признаков в задаче регрессии, используя три различные модели: Lasso, случайные деревья (Random Forest) и линейную корреляцию (f_regression). Каждая модель ранжирует признаки в соответствии с их важностью, а затем производится вычисление среднего ранжирования для каждого признака на основе результатов всех моделей.
|
||||
|
||||
|
||||
### Используемые библиотеки
|
||||
- `numpy`: Для работы с массивами и вычислений.
|
||||
- `scikit-learn`: Библиотека машинного обучения для реализации моделей регрессии и методов ранжирования признаков.
|
||||
|
||||
### Шаги программы
|
||||
|
||||
Исходные данные: Генерация случайных данных для задачи регрессии, состоящей из 750 строк и 14 признаков.
|
||||
|
||||
Модели:
|
||||
|
||||
Lasso: Применение линейной модели Lasso с параметром альфа равным 0.05.
|
||||
Random Forest: Использование ансамбля случайных деревьев с 100 деревьями.
|
||||
Линейная корреляция (f_regression): Расчет коэффициентов корреляции между признаками и целевой переменной.
|
||||
Ранжирование признаков:
|
||||
|
||||
Каждая модель ранжирует признаки в соответствии с их важностью.
|
||||
Используется MinMaxScaler для нормализации значений рангов.
|
||||
Среднее ранжирование:
|
||||
|
||||
Для каждого признака рассчитывается среднее значение его ранга по всем моделям.
|
||||
Вывод результатов:
|
||||
|
||||
Выводится среднее ранжирование для каждого признака.
|
||||
Показываются результаты ранжирования для каждой модели.
|
||||
Выводится топ-4 признака с их значениями на основе среднего ранжирования.
|
||||
|
||||
### Запуск программы
|
||||
- Склонировать или скачать код `main.py`.
|
||||
- Запустите файл в среде, поддерживающей выполнение Python. `python main.py`
|
||||
|
||||
### Результаты
|
||||
- Lasso
|
||||
{'x1': 0.69, 'x2': 0.72, 'x3': 0.0, 'x4': 1.0, 'x5': 0.29, 'x6': 0.0, 'x7': 0.0, 'x8': 0.0, 'x9': 0.0, 'x10': 0.0, 'x11': 0.0, 'x12': 0.0, 'x13': 0.0, 'x14': 0.0}
|
||||
- Random Forest
|
||||
{'x1': 0.66, 'x2': 0.76, 'x3': 0.1, 'x4': 0.55, 'x5': 0.23, 'x6': 0.0, 'x7': 0.01, 'x8': 0.0, 'x9': 0.0, 'x10': 0.0, 'x11': 0.29, 'x12': 0.28, 'x13': 0.09, 'x14': 1.0}
|
||||
- Correlation
|
||||
{'x1': 0.3, 'x2': 0.45, 'x3': 0.0, 'x4': 1.0, 'x5': 0.04, 'x6': 0.0, 'x7': 0.01, 'x8': 0.02, 'x9': 0.01, 'x10': 0.0, 'x11': 0.29, 'x12': 0.44, 'x13': 0.0, 'x14': 0.98}
|
||||
- Среднее
|
||||
{'x1': 0.55, 'x2': 0.64, 'x3': 0.03, 'x4': 0.85, 'x5': 0.19, 'x6': 0.0, 'x7': 0.01, 'x8': 0.01, 'x9': 0.0, 'x10': 0.0, 'x11': 0.19, 'x12': 0.24, 'x13': 0.03, 'x14': 0.66}
|
||||
- Топ 4 признака с их значениями на основе среднего ранжирования:
|
||||
1. **x4:** 0.85
|
||||
2. **x14:** 0.66
|
||||
3. **x2:** 0.64
|
||||
4. **x1:** 0.55
|
||||
|
@ -1,71 +0,0 @@
|
||||
from sklearn.linear_model import Lasso
|
||||
from sklearn.ensemble import RandomForestRegressor
|
||||
from sklearn.feature_selection import f_regression
|
||||
from sklearn.preprocessing import MinMaxScaler
|
||||
import numpy as np
|
||||
|
||||
# Генерация исходных данных
|
||||
np.random.seed(0)
|
||||
size = 750
|
||||
X = np.random.uniform(0, 1, (size, 14))
|
||||
Y = (10 * np.sin(np.pi*X[:, 0]*X[:, 1]) + 20*(X[:, 2] - .5)**2 +
|
||||
10*X[:, 3] + 5*X[:, 4]**5 + np.random.normal(0, 1))
|
||||
X[:, 10:] = X[:, :4] + np.random.normal(0, .025, (size, 4))
|
||||
|
||||
# Лассо
|
||||
lasso = Lasso(alpha=0.05)
|
||||
lasso.fit(X, Y)
|
||||
|
||||
# Случайные деревья
|
||||
rf = RandomForestRegressor(n_estimators=100, random_state=0)
|
||||
rf.fit(X, Y)
|
||||
|
||||
# Линейная корреляция (f_regression)
|
||||
correlation_coeffs, _ = f_regression(X, Y)
|
||||
|
||||
# Ранжирование с использованием MinMaxScaler
|
||||
def rank_to_dict(ranks, names):
|
||||
ranks = np.abs(ranks)
|
||||
minmax = MinMaxScaler()
|
||||
ranks = minmax.fit_transform(np.array(ranks).reshape(14, 1)).ravel()
|
||||
ranks = map(lambda x: round(x, 2), ranks)
|
||||
return dict(zip(names, ranks))
|
||||
|
||||
# Ранжирование для каждой модели
|
||||
ranks = {}
|
||||
names = ["x%s" % i for i in range(1, 15)]
|
||||
|
||||
ranks["Lasso"] = rank_to_dict(lasso.coef_, names)
|
||||
ranks["Random Forest"] = rank_to_dict(rf.feature_importances_, names)
|
||||
ranks["Correlation"] = rank_to_dict(correlation_coeffs, names)
|
||||
|
||||
# Создание пустого словаря для данных
|
||||
mean = {}
|
||||
|
||||
# Обработка словаря ranks
|
||||
for key, value in ranks.items():
|
||||
for item in value.items():
|
||||
if item[0] not in mean:
|
||||
mean[item[0]] = 0
|
||||
mean[item[0]] += item[1]
|
||||
|
||||
# Нахождение среднего по каждому признаку
|
||||
for key, value in mean.items():
|
||||
res = value / len(ranks)
|
||||
mean[key] = round(res, 2)
|
||||
|
||||
# Сортировка и вывод списка средних значений
|
||||
mean_dict = dict(mean)
|
||||
print("MEAN")
|
||||
print(mean_dict)
|
||||
|
||||
# Вывод результатов ранжирования для каждой модели
|
||||
for key, value in ranks.items():
|
||||
print(key)
|
||||
print(value)
|
||||
|
||||
# Вывод топ-4 признаков с их значениями
|
||||
top_features = sorted(mean.items(), key=lambda x: x[1], reverse=True)[:4]
|
||||
print("Top 4 features with values:")
|
||||
for feature, value in top_features:
|
||||
print(f"{feature}: {value}")
|
@ -1,71 +0,0 @@
|
||||
# Лабораторная 3
|
||||
## Вариант 9
|
||||
|
||||
## Задание
|
||||
Решите с помощью библиотечной реализации дерева решений задачу из лабораторной работы «Веб-сервис «Дерево решений» по предмету «Методы искусственного интеллекта»на 99% ваших данных.
|
||||
Проверьте работу модели на оставшемся проценте, сделайте вывод.
|
||||
|
||||
## Описание Программы
|
||||
Данная программа предназначена для построения и оценки модели дерева решений с использованием данных о зарплатах в области Data Science.
|
||||
1) Задача, решаемая деревом решений:
|
||||
Можно использовать дерево решений для классификации должностей на основе опыта работы (experience_level), типа занятости (employment_type), местоположения компании (company_location) и размера компании (company_size). Например, можно предсказать категории должностей, такие как "Junior Data Scientist," "Senior Data Analyst," и т.д.
|
||||
|
||||
### Используемые библиотеки
|
||||
- `pandas`: Библиотека для обработки и анализа данных, используется для загрузки и предобработки данных.
|
||||
- `scikit-learn`: Библиотека для машинного обучения, включает в себя реализацию дерева решений (DecisionTreeClassifier), метрики оценки модели (accuracy_score, mean_squared_error) и кодировщик категориальных переменных (LabelEncoder).
|
||||
|
||||
### Шаги программы
|
||||
|
||||
**Загрузка данных:**
|
||||
|
||||
Данные о зарплатах в области Data Science загружаются из файла 'ds_salaries.csv'.
|
||||
Столбец 'Unnamed: 0', предположительно, содержащий индекс или идентификатор, удаляется.
|
||||
|
||||
**Предобработка данных:**
|
||||
|
||||
Определены признаки (features) и целевая переменная (target).
|
||||
Категориальные признаки преобразованы в числовой формат с использованием LabelEncoder.
|
||||
Целевая переменная также преобразована в числовой формат.
|
||||
|
||||
**Разделение данных:**
|
||||
|
||||
Данные разделены на обучающий (99%) и тестовый (1%) наборы с использованием train_test_split.
|
||||
|
||||
**Построение и обучение модели:**
|
||||
|
||||
Создана и обучена модель дерева решений с использованием DecisionTreeClassifier.
|
||||
|
||||
**Предсказание и оценка:**
|
||||
|
||||
Выполнено предсказание категорий должностей на тестовом наборе данных.
|
||||
Оценена точность модели с использованием accuracy_score.
|
||||
Рассчитана средняя квадратичная ошибка в процентах с использованием mean_squared_error.
|
||||
|
||||
**Анализ важности признаков:**
|
||||
|
||||
Выведена важность каждого признака в модели.
|
||||
Вывод первых 5 строк тестового набора данных:
|
||||
|
||||
Выведены первые 5 строк тестового набора данных для ознакомления с фактическими и предсказанными значениями.
|
||||
|
||||
### Запуск программы
|
||||
- Склонировать или скачать код `main.py`.
|
||||
- Запустите файл в среде, поддерживающей выполнение Python. `python main.py`
|
||||
|
||||
### Результаты
|
||||
![](img.png)
|
||||
|
||||
На основе результатов, предоставленных моделью дерева решений, можно сделать вывод, что текущая модель не идеально подходит для задачи классификации должностей на основе предоставленных данных.
|
||||
|
||||
**Точность модели 14.29%**
|
||||
|
||||
Низкая точность может свидетельствовать о том, что модель недостаточно эффективна в предсказании категорий должностей. Возможные причины низкой точности могут включать в себя неоптимальный выбор признаков, недостаточную обработку данных или неоптимальную настройку параметров модели.
|
||||
|
||||
**Средняя квадратичная ошибка: 165.86%**
|
||||
|
||||
Высокая средняя квадратичная ошибка также указывает на значительное отклонение предсказанных значений от фактических значений. Это говорит о том, что модель недостаточно точно предсказывает категории должностей.
|
||||
|
||||
**Важность признаков**
|
||||
|
||||
'company_location' оказывает наибольшее влияние на модель, тогда как 'employment_type' - наименьшее.
|
||||
|
@ -1,608 +0,0 @@
|
||||
,work_year,experience_level,employment_type,job_title,salary,salary_currency,salary_in_usd,employee_residence,remote_ratio,company_location,company_size
|
||||
0,2020,MI,FT,Data Scientist,70000,EUR,79833,DE,0,DE,L
|
||||
1,2020,SE,FT,Machine Learning Scientist,260000,USD,260000,JP,0,JP,S
|
||||
2,2020,SE,FT,Big Data Engineer,85000,GBP,109024,GB,50,GB,M
|
||||
3,2020,MI,FT,Product Data Analyst,20000,USD,20000,HN,0,HN,S
|
||||
4,2020,SE,FT,Machine Learning Engineer,150000,USD,150000,US,50,US,L
|
||||
5,2020,EN,FT,Data Analyst,72000,USD,72000,US,100,US,L
|
||||
6,2020,SE,FT,Lead Data Scientist,190000,USD,190000,US,100,US,S
|
||||
7,2020,MI,FT,Data Scientist,11000000,HUF,35735,HU,50,HU,L
|
||||
8,2020,MI,FT,Business Data Analyst,135000,USD,135000,US,100,US,L
|
||||
9,2020,SE,FT,Lead Data Engineer,125000,USD,125000,NZ,50,NZ,S
|
||||
10,2020,EN,FT,Data Scientist,45000,EUR,51321,FR,0,FR,S
|
||||
11,2020,MI,FT,Data Scientist,3000000,INR,40481,IN,0,IN,L
|
||||
12,2020,EN,FT,Data Scientist,35000,EUR,39916,FR,0,FR,M
|
||||
13,2020,MI,FT,Lead Data Analyst,87000,USD,87000,US,100,US,L
|
||||
14,2020,MI,FT,Data Analyst,85000,USD,85000,US,100,US,L
|
||||
15,2020,MI,FT,Data Analyst,8000,USD,8000,PK,50,PK,L
|
||||
16,2020,EN,FT,Data Engineer,4450000,JPY,41689,JP,100,JP,S
|
||||
17,2020,SE,FT,Big Data Engineer,100000,EUR,114047,PL,100,GB,S
|
||||
18,2020,EN,FT,Data Science Consultant,423000,INR,5707,IN,50,IN,M
|
||||
19,2020,MI,FT,Lead Data Engineer,56000,USD,56000,PT,100,US,M
|
||||
20,2020,MI,FT,Machine Learning Engineer,299000,CNY,43331,CN,0,CN,M
|
||||
21,2020,MI,FT,Product Data Analyst,450000,INR,6072,IN,100,IN,L
|
||||
22,2020,SE,FT,Data Engineer,42000,EUR,47899,GR,50,GR,L
|
||||
23,2020,MI,FT,BI Data Analyst,98000,USD,98000,US,0,US,M
|
||||
24,2020,MI,FT,Lead Data Scientist,115000,USD,115000,AE,0,AE,L
|
||||
25,2020,EX,FT,Director of Data Science,325000,USD,325000,US,100,US,L
|
||||
26,2020,EN,FT,Research Scientist,42000,USD,42000,NL,50,NL,L
|
||||
27,2020,SE,FT,Data Engineer,720000,MXN,33511,MX,0,MX,S
|
||||
28,2020,EN,CT,Business Data Analyst,100000,USD,100000,US,100,US,L
|
||||
29,2020,SE,FT,Machine Learning Manager,157000,CAD,117104,CA,50,CA,L
|
||||
30,2020,MI,FT,Data Engineering Manager,51999,EUR,59303,DE,100,DE,S
|
||||
31,2020,EN,FT,Big Data Engineer,70000,USD,70000,US,100,US,L
|
||||
32,2020,SE,FT,Data Scientist,60000,EUR,68428,GR,100,US,L
|
||||
33,2020,MI,FT,Research Scientist,450000,USD,450000,US,0,US,M
|
||||
34,2020,MI,FT,Data Analyst,41000,EUR,46759,FR,50,FR,L
|
||||
35,2020,MI,FT,Data Engineer,65000,EUR,74130,AT,50,AT,L
|
||||
36,2020,MI,FT,Data Science Consultant,103000,USD,103000,US,100,US,L
|
||||
37,2020,EN,FT,Machine Learning Engineer,250000,USD,250000,US,50,US,L
|
||||
38,2020,EN,FT,Data Analyst,10000,USD,10000,NG,100,NG,S
|
||||
39,2020,EN,FT,Machine Learning Engineer,138000,USD,138000,US,100,US,S
|
||||
40,2020,MI,FT,Data Scientist,45760,USD,45760,PH,100,US,S
|
||||
41,2020,EX,FT,Data Engineering Manager,70000,EUR,79833,ES,50,ES,L
|
||||
42,2020,MI,FT,Machine Learning Infrastructure Engineer,44000,EUR,50180,PT,0,PT,M
|
||||
43,2020,MI,FT,Data Engineer,106000,USD,106000,US,100,US,L
|
||||
44,2020,MI,FT,Data Engineer,88000,GBP,112872,GB,50,GB,L
|
||||
45,2020,EN,PT,ML Engineer,14000,EUR,15966,DE,100,DE,S
|
||||
46,2020,MI,FT,Data Scientist,60000,GBP,76958,GB,100,GB,S
|
||||
47,2020,SE,FT,Data Engineer,188000,USD,188000,US,100,US,L
|
||||
48,2020,MI,FT,Data Scientist,105000,USD,105000,US,100,US,L
|
||||
49,2020,MI,FT,Data Engineer,61500,EUR,70139,FR,50,FR,L
|
||||
50,2020,EN,FT,Data Analyst,450000,INR,6072,IN,0,IN,S
|
||||
51,2020,EN,FT,Data Analyst,91000,USD,91000,US,100,US,L
|
||||
52,2020,EN,FT,AI Scientist,300000,DKK,45896,DK,50,DK,S
|
||||
53,2020,EN,FT,Data Engineer,48000,EUR,54742,PK,100,DE,L
|
||||
54,2020,SE,FL,Computer Vision Engineer,60000,USD,60000,RU,100,US,S
|
||||
55,2020,SE,FT,Principal Data Scientist,130000,EUR,148261,DE,100,DE,M
|
||||
56,2020,MI,FT,Data Scientist,34000,EUR,38776,ES,100,ES,M
|
||||
57,2020,MI,FT,Data Scientist,118000,USD,118000,US,100,US,M
|
||||
58,2020,SE,FT,Data Scientist,120000,USD,120000,US,50,US,L
|
||||
59,2020,MI,FT,Data Scientist,138350,USD,138350,US,100,US,M
|
||||
60,2020,MI,FT,Data Engineer,110000,USD,110000,US,100,US,L
|
||||
61,2020,MI,FT,Data Engineer,130800,USD,130800,ES,100,US,M
|
||||
62,2020,EN,PT,Data Scientist,19000,EUR,21669,IT,50,IT,S
|
||||
63,2020,SE,FT,Data Scientist,412000,USD,412000,US,100,US,L
|
||||
64,2020,SE,FT,Machine Learning Engineer,40000,EUR,45618,HR,100,HR,S
|
||||
65,2020,EN,FT,Data Scientist,55000,EUR,62726,DE,50,DE,S
|
||||
66,2020,EN,FT,Data Scientist,43200,EUR,49268,DE,0,DE,S
|
||||
67,2020,SE,FT,Data Science Manager,190200,USD,190200,US,100,US,M
|
||||
68,2020,EN,FT,Data Scientist,105000,USD,105000,US,100,US,S
|
||||
69,2020,SE,FT,Data Scientist,80000,EUR,91237,AT,0,AT,S
|
||||
70,2020,MI,FT,Data Scientist,55000,EUR,62726,FR,50,LU,S
|
||||
71,2020,MI,FT,Data Scientist,37000,EUR,42197,FR,50,FR,S
|
||||
72,2021,EN,FT,Research Scientist,60000,GBP,82528,GB,50,GB,L
|
||||
73,2021,EX,FT,BI Data Analyst,150000,USD,150000,IN,100,US,L
|
||||
74,2021,EX,FT,Head of Data,235000,USD,235000,US,100,US,L
|
||||
75,2021,SE,FT,Data Scientist,45000,EUR,53192,FR,50,FR,L
|
||||
76,2021,MI,FT,BI Data Analyst,100000,USD,100000,US,100,US,M
|
||||
77,2021,MI,PT,3D Computer Vision Researcher,400000,INR,5409,IN,50,IN,M
|
||||
78,2021,MI,CT,ML Engineer,270000,USD,270000,US,100,US,L
|
||||
79,2021,EN,FT,Data Analyst,80000,USD,80000,US,100,US,M
|
||||
80,2021,SE,FT,Data Analytics Engineer,67000,EUR,79197,DE,100,DE,L
|
||||
81,2021,MI,FT,Data Engineer,140000,USD,140000,US,100,US,L
|
||||
82,2021,MI,FT,Applied Data Scientist,68000,CAD,54238,GB,50,CA,L
|
||||
83,2021,MI,FT,Machine Learning Engineer,40000,EUR,47282,ES,100,ES,S
|
||||
84,2021,EX,FT,Director of Data Science,130000,EUR,153667,IT,100,PL,L
|
||||
85,2021,MI,FT,Data Engineer,110000,PLN,28476,PL,100,PL,L
|
||||
86,2021,EN,FT,Data Analyst,50000,EUR,59102,FR,50,FR,M
|
||||
87,2021,MI,FT,Data Analytics Engineer,110000,USD,110000,US,100,US,L
|
||||
88,2021,SE,FT,Lead Data Analyst,170000,USD,170000,US,100,US,L
|
||||
89,2021,SE,FT,Data Analyst,80000,USD,80000,BG,100,US,S
|
||||
90,2021,SE,FT,Marketing Data Analyst,75000,EUR,88654,GR,100,DK,L
|
||||
91,2021,EN,FT,Data Science Consultant,65000,EUR,76833,DE,100,DE,S
|
||||
92,2021,MI,FT,Lead Data Analyst,1450000,INR,19609,IN,100,IN,L
|
||||
93,2021,SE,FT,Lead Data Engineer,276000,USD,276000,US,0,US,L
|
||||
94,2021,EN,FT,Data Scientist,2200000,INR,29751,IN,50,IN,L
|
||||
95,2021,MI,FT,Cloud Data Engineer,120000,SGD,89294,SG,50,SG,L
|
||||
96,2021,EN,PT,AI Scientist,12000,USD,12000,BR,100,US,S
|
||||
97,2021,MI,FT,Financial Data Analyst,450000,USD,450000,US,100,US,L
|
||||
98,2021,EN,FT,Computer Vision Software Engineer,70000,USD,70000,US,100,US,M
|
||||
99,2021,MI,FT,Computer Vision Software Engineer,81000,EUR,95746,DE,100,US,S
|
||||
100,2021,MI,FT,Data Analyst,75000,USD,75000,US,0,US,L
|
||||
101,2021,SE,FT,Data Engineer,150000,USD,150000,US,100,US,L
|
||||
102,2021,MI,FT,BI Data Analyst,11000000,HUF,36259,HU,50,US,L
|
||||
103,2021,MI,FT,Data Analyst,62000,USD,62000,US,0,US,L
|
||||
104,2021,MI,FT,Data Scientist,73000,USD,73000,US,0,US,L
|
||||
105,2021,MI,FT,Data Analyst,37456,GBP,51519,GB,50,GB,L
|
||||
106,2021,MI,FT,Research Scientist,235000,CAD,187442,CA,100,CA,L
|
||||
107,2021,SE,FT,Data Engineer,115000,USD,115000,US,100,US,S
|
||||
108,2021,SE,FT,Data Engineer,150000,USD,150000,US,100,US,M
|
||||
109,2021,EN,FT,Data Engineer,2250000,INR,30428,IN,100,IN,L
|
||||
110,2021,SE,FT,Machine Learning Engineer,80000,EUR,94564,DE,50,DE,L
|
||||
111,2021,SE,FT,Director of Data Engineering,82500,GBP,113476,GB,100,GB,M
|
||||
112,2021,SE,FT,Lead Data Engineer,75000,GBP,103160,GB,100,GB,S
|
||||
113,2021,EN,PT,AI Scientist,12000,USD,12000,PK,100,US,M
|
||||
114,2021,MI,FT,Data Engineer,38400,EUR,45391,NL,100,NL,L
|
||||
115,2021,EN,FT,Machine Learning Scientist,225000,USD,225000,US,100,US,L
|
||||
116,2021,MI,FT,Data Scientist,50000,USD,50000,NG,100,NG,L
|
||||
117,2021,MI,FT,Data Science Engineer,34000,EUR,40189,GR,100,GR,M
|
||||
118,2021,EN,FT,Data Analyst,90000,USD,90000,US,100,US,S
|
||||
119,2021,MI,FT,Data Engineer,200000,USD,200000,US,100,US,L
|
||||
120,2021,MI,FT,Big Data Engineer,60000,USD,60000,ES,50,RO,M
|
||||
121,2021,SE,FT,Principal Data Engineer,200000,USD,200000,US,100,US,M
|
||||
122,2021,EN,FT,Data Analyst,50000,USD,50000,US,100,US,M
|
||||
123,2021,EN,FT,Applied Data Scientist,80000,GBP,110037,GB,0,GB,L
|
||||
124,2021,EN,PT,Data Analyst,8760,EUR,10354,ES,50,ES,M
|
||||
125,2021,MI,FT,Principal Data Scientist,151000,USD,151000,US,100,US,L
|
||||
126,2021,SE,FT,Machine Learning Scientist,120000,USD,120000,US,50,US,S
|
||||
127,2021,MI,FT,Data Scientist,700000,INR,9466,IN,0,IN,S
|
||||
128,2021,EN,FT,Machine Learning Engineer,20000,USD,20000,IN,100,IN,S
|
||||
129,2021,SE,FT,Lead Data Scientist,3000000,INR,40570,IN,50,IN,L
|
||||
130,2021,EN,FT,Machine Learning Developer,100000,USD,100000,IQ,50,IQ,S
|
||||
131,2021,EN,FT,Data Scientist,42000,EUR,49646,FR,50,FR,M
|
||||
132,2021,MI,FT,Applied Machine Learning Scientist,38400,USD,38400,VN,100,US,M
|
||||
133,2021,SE,FT,Computer Vision Engineer,24000,USD,24000,BR,100,BR,M
|
||||
134,2021,EN,FT,Data Scientist,100000,USD,100000,US,0,US,S
|
||||
135,2021,MI,FT,Data Analyst,90000,USD,90000,US,100,US,M
|
||||
136,2021,MI,FT,ML Engineer,7000000,JPY,63711,JP,50,JP,S
|
||||
137,2021,MI,FT,ML Engineer,8500000,JPY,77364,JP,50,JP,S
|
||||
138,2021,SE,FT,Principal Data Scientist,220000,USD,220000,US,0,US,L
|
||||
139,2021,EN,FT,Data Scientist,80000,USD,80000,US,100,US,M
|
||||
140,2021,MI,FT,Data Analyst,135000,USD,135000,US,100,US,L
|
||||
141,2021,SE,FT,Data Science Manager,240000,USD,240000,US,0,US,L
|
||||
142,2021,SE,FT,Data Engineering Manager,150000,USD,150000,US,0,US,L
|
||||
143,2021,MI,FT,Data Scientist,82500,USD,82500,US,100,US,S
|
||||
144,2021,MI,FT,Data Engineer,100000,USD,100000,US,100,US,L
|
||||
145,2021,SE,FT,Machine Learning Engineer,70000,EUR,82744,BE,50,BE,M
|
||||
146,2021,MI,FT,Research Scientist,53000,EUR,62649,FR,50,FR,M
|
||||
147,2021,MI,FT,Data Engineer,90000,USD,90000,US,100,US,L
|
||||
148,2021,SE,FT,Data Engineering Manager,153000,USD,153000,US,100,US,L
|
||||
149,2021,SE,FT,Cloud Data Engineer,160000,USD,160000,BR,100,US,S
|
||||
150,2021,SE,FT,Director of Data Science,168000,USD,168000,JP,0,JP,S
|
||||
151,2021,MI,FT,Data Scientist,150000,USD,150000,US,100,US,M
|
||||
152,2021,MI,FT,Data Scientist,95000,CAD,75774,CA,100,CA,L
|
||||
153,2021,EN,FT,Data Scientist,13400,USD,13400,UA,100,UA,L
|
||||
154,2021,SE,FT,Data Science Manager,144000,USD,144000,US,100,US,L
|
||||
155,2021,SE,FT,Data Science Engineer,159500,CAD,127221,CA,50,CA,L
|
||||
156,2021,MI,FT,Data Scientist,160000,SGD,119059,SG,100,IL,M
|
||||
157,2021,MI,FT,Applied Machine Learning Scientist,423000,USD,423000,US,50,US,L
|
||||
158,2021,SE,FT,Data Analytics Manager,120000,USD,120000,US,100,US,M
|
||||
159,2021,EN,FT,Machine Learning Engineer,125000,USD,125000,US,100,US,S
|
||||
160,2021,EX,FT,Head of Data,230000,USD,230000,RU,50,RU,L
|
||||
161,2021,EX,FT,Head of Data Science,85000,USD,85000,RU,0,RU,M
|
||||
162,2021,MI,FT,Data Engineer,24000,EUR,28369,MT,50,MT,L
|
||||
163,2021,EN,FT,Data Science Consultant,54000,EUR,63831,DE,50,DE,L
|
||||
164,2021,EX,FT,Director of Data Science,110000,EUR,130026,DE,50,DE,M
|
||||
165,2021,SE,FT,Data Specialist,165000,USD,165000,US,100,US,L
|
||||
166,2021,EN,FT,Data Engineer,80000,USD,80000,US,100,US,L
|
||||
167,2021,EX,FT,Director of Data Science,250000,USD,250000,US,0,US,L
|
||||
168,2021,EN,FT,BI Data Analyst,55000,USD,55000,US,50,US,S
|
||||
169,2021,MI,FT,Data Architect,150000,USD,150000,US,100,US,L
|
||||
170,2021,MI,FT,Data Architect,170000,USD,170000,US,100,US,L
|
||||
171,2021,MI,FT,Data Engineer,60000,GBP,82528,GB,100,GB,L
|
||||
172,2021,EN,FT,Data Analyst,60000,USD,60000,US,100,US,S
|
||||
173,2021,SE,FT,Principal Data Scientist,235000,USD,235000,US,100,US,L
|
||||
174,2021,SE,FT,Research Scientist,51400,EUR,60757,PT,50,PT,L
|
||||
175,2021,SE,FT,Data Engineering Manager,174000,USD,174000,US,100,US,L
|
||||
176,2021,MI,FT,Data Scientist,58000,MXN,2859,MX,0,MX,S
|
||||
177,2021,MI,FT,Data Scientist,30400000,CLP,40038,CL,100,CL,L
|
||||
178,2021,EN,FT,Machine Learning Engineer,81000,USD,81000,US,50,US,S
|
||||
179,2021,MI,FT,Data Scientist,420000,INR,5679,IN,100,US,S
|
||||
180,2021,MI,FT,Big Data Engineer,1672000,INR,22611,IN,0,IN,L
|
||||
181,2021,MI,FT,Data Scientist,76760,EUR,90734,DE,50,DE,L
|
||||
182,2021,MI,FT,Data Engineer,22000,EUR,26005,RO,0,US,L
|
||||
183,2021,SE,FT,Finance Data Analyst,45000,GBP,61896,GB,50,GB,L
|
||||
184,2021,MI,FL,Machine Learning Scientist,12000,USD,12000,PK,50,PK,M
|
||||
185,2021,MI,FT,Data Engineer,4000,USD,4000,IR,100,IR,M
|
||||
186,2021,SE,FT,Data Analytics Engineer,50000,USD,50000,VN,100,GB,M
|
||||
187,2021,EX,FT,Data Science Consultant,59000,EUR,69741,FR,100,ES,S
|
||||
188,2021,SE,FT,Data Engineer,65000,EUR,76833,RO,50,GB,S
|
||||
189,2021,MI,FT,Machine Learning Engineer,74000,USD,74000,JP,50,JP,S
|
||||
190,2021,SE,FT,Data Science Manager,152000,USD,152000,US,100,FR,L
|
||||
191,2021,EN,FT,Machine Learning Engineer,21844,USD,21844,CO,50,CO,M
|
||||
192,2021,MI,FT,Big Data Engineer,18000,USD,18000,MD,0,MD,S
|
||||
193,2021,SE,FT,Data Science Manager,174000,USD,174000,US,100,US,L
|
||||
194,2021,SE,FT,Research Scientist,120500,CAD,96113,CA,50,CA,L
|
||||
195,2021,MI,FT,Data Scientist,147000,USD,147000,US,50,US,L
|
||||
196,2021,EN,FT,BI Data Analyst,9272,USD,9272,KE,100,KE,S
|
||||
197,2021,SE,FT,Machine Learning Engineer,1799997,INR,24342,IN,100,IN,L
|
||||
198,2021,SE,FT,Data Science Manager,4000000,INR,54094,IN,50,US,L
|
||||
199,2021,EN,FT,Data Science Consultant,90000,USD,90000,US,100,US,S
|
||||
200,2021,MI,FT,Data Scientist,52000,EUR,61467,DE,50,AT,M
|
||||
201,2021,SE,FT,Machine Learning Infrastructure Engineer,195000,USD,195000,US,100,US,M
|
||||
202,2021,MI,FT,Data Scientist,32000,EUR,37825,ES,100,ES,L
|
||||
203,2021,SE,FT,Research Scientist,50000,USD,50000,FR,100,US,S
|
||||
204,2021,MI,FT,Data Scientist,160000,USD,160000,US,100,US,L
|
||||
205,2021,MI,FT,Data Scientist,69600,BRL,12901,BR,0,BR,S
|
||||
206,2021,SE,FT,Machine Learning Engineer,200000,USD,200000,US,100,US,L
|
||||
207,2021,SE,FT,Data Engineer,165000,USD,165000,US,0,US,M
|
||||
208,2021,MI,FL,Data Engineer,20000,USD,20000,IT,0,US,L
|
||||
209,2021,SE,FT,Data Analytics Manager,120000,USD,120000,US,0,US,L
|
||||
210,2021,MI,FT,Machine Learning Engineer,21000,EUR,24823,SI,50,SI,L
|
||||
211,2021,MI,FT,Research Scientist,48000,EUR,56738,FR,50,FR,S
|
||||
212,2021,MI,FT,Data Engineer,48000,GBP,66022,HK,50,GB,S
|
||||
213,2021,EN,FT,Big Data Engineer,435000,INR,5882,IN,0,CH,L
|
||||
214,2021,EN,FT,Machine Learning Engineer,21000,EUR,24823,DE,50,DE,M
|
||||
215,2021,SE,FT,Principal Data Engineer,185000,USD,185000,US,100,US,L
|
||||
216,2021,EN,PT,Computer Vision Engineer,180000,DKK,28609,DK,50,DK,S
|
||||
217,2021,MI,FT,Data Scientist,76760,EUR,90734,DE,50,DE,L
|
||||
218,2021,MI,FT,Machine Learning Engineer,75000,EUR,88654,BE,100,BE,M
|
||||
219,2021,SE,FT,Data Analytics Manager,140000,USD,140000,US,100,US,L
|
||||
220,2021,MI,FT,Machine Learning Engineer,180000,PLN,46597,PL,100,PL,L
|
||||
221,2021,MI,FT,Data Scientist,85000,GBP,116914,GB,50,GB,L
|
||||
222,2021,MI,FT,Data Scientist,2500000,INR,33808,IN,0,IN,M
|
||||
223,2021,MI,FT,Data Scientist,40900,GBP,56256,GB,50,GB,L
|
||||
224,2021,SE,FT,Machine Learning Scientist,225000,USD,225000,US,100,CA,L
|
||||
225,2021,EX,CT,Principal Data Scientist,416000,USD,416000,US,100,US,S
|
||||
226,2021,SE,FT,Data Scientist,110000,CAD,87738,CA,100,CA,S
|
||||
227,2021,MI,FT,Data Scientist,75000,EUR,88654,DE,50,DE,L
|
||||
228,2021,SE,FT,Data Scientist,135000,USD,135000,US,0,US,L
|
||||
229,2021,SE,FT,Data Analyst,90000,CAD,71786,CA,100,CA,M
|
||||
230,2021,EN,FT,Big Data Engineer,1200000,INR,16228,IN,100,IN,L
|
||||
231,2021,SE,FT,ML Engineer,256000,USD,256000,US,100,US,S
|
||||
232,2021,SE,FT,Director of Data Engineering,200000,USD,200000,US,100,US,L
|
||||
233,2021,SE,FT,Data Analyst,200000,USD,200000,US,100,US,L
|
||||
234,2021,MI,FT,Data Architect,180000,USD,180000,US,100,US,L
|
||||
235,2021,MI,FT,Head of Data Science,110000,USD,110000,US,0,US,S
|
||||
236,2021,MI,FT,Research Scientist,80000,CAD,63810,CA,100,CA,M
|
||||
237,2021,MI,FT,Data Scientist,39600,EUR,46809,ES,100,ES,M
|
||||
238,2021,EN,FT,Data Scientist,4000,USD,4000,VN,0,VN,M
|
||||
239,2021,EN,FT,Data Engineer,1600000,INR,21637,IN,50,IN,M
|
||||
240,2021,SE,FT,Data Scientist,130000,CAD,103691,CA,100,CA,L
|
||||
241,2021,MI,FT,Data Analyst,80000,USD,80000,US,100,US,L
|
||||
242,2021,MI,FT,Data Engineer,110000,USD,110000,US,100,US,L
|
||||
243,2021,SE,FT,Data Scientist,165000,USD,165000,US,100,US,L
|
||||
244,2021,EN,FT,AI Scientist,1335000,INR,18053,IN,100,AS,S
|
||||
245,2021,MI,FT,Data Engineer,52500,GBP,72212,GB,50,GB,L
|
||||
246,2021,EN,FT,Data Scientist,31000,EUR,36643,FR,50,FR,L
|
||||
247,2021,MI,FT,Data Engineer,108000,TRY,12103,TR,0,TR,M
|
||||
248,2021,SE,FT,Data Engineer,70000,GBP,96282,GB,50,GB,L
|
||||
249,2021,SE,FT,Principal Data Analyst,170000,USD,170000,US,100,US,M
|
||||
250,2021,MI,FT,Data Scientist,115000,USD,115000,US,50,US,L
|
||||
251,2021,EN,FT,Data Scientist,90000,USD,90000,US,100,US,S
|
||||
252,2021,EX,FT,Principal Data Engineer,600000,USD,600000,US,100,US,L
|
||||
253,2021,EN,FT,Data Scientist,2100000,INR,28399,IN,100,IN,M
|
||||
254,2021,MI,FT,Data Analyst,93000,USD,93000,US,100,US,L
|
||||
255,2021,SE,FT,Big Data Architect,125000,CAD,99703,CA,50,CA,M
|
||||
256,2021,MI,FT,Data Engineer,200000,USD,200000,US,100,US,L
|
||||
257,2021,SE,FT,Principal Data Scientist,147000,EUR,173762,DE,100,DE,M
|
||||
258,2021,SE,FT,Machine Learning Engineer,185000,USD,185000,US,50,US,L
|
||||
259,2021,EX,FT,Director of Data Science,120000,EUR,141846,DE,0,DE,L
|
||||
260,2021,MI,FT,Data Scientist,130000,USD,130000,US,50,US,L
|
||||
261,2021,SE,FT,Data Analyst,54000,EUR,63831,DE,50,DE,L
|
||||
262,2021,MI,FT,Data Scientist,1250000,INR,16904,IN,100,IN,S
|
||||
263,2021,SE,FT,Machine Learning Engineer,4900000,INR,66265,IN,0,IN,L
|
||||
264,2021,MI,FT,Data Scientist,21600,EUR,25532,RS,100,DE,S
|
||||
265,2021,SE,FT,Lead Data Engineer,160000,USD,160000,PR,50,US,S
|
||||
266,2021,MI,FT,Data Engineer,93150,USD,93150,US,0,US,M
|
||||
267,2021,MI,FT,Data Engineer,111775,USD,111775,US,0,US,M
|
||||
268,2021,MI,FT,Data Engineer,250000,TRY,28016,TR,100,TR,M
|
||||
269,2021,EN,FT,Data Engineer,55000,EUR,65013,DE,50,DE,M
|
||||
270,2021,EN,FT,Data Engineer,72500,USD,72500,US,100,US,L
|
||||
271,2021,SE,FT,Computer Vision Engineer,102000,BRL,18907,BR,0,BR,M
|
||||
272,2021,EN,FT,Data Science Consultant,65000,EUR,76833,DE,0,DE,L
|
||||
273,2021,EN,FT,Machine Learning Engineer,85000,USD,85000,NL,100,DE,S
|
||||
274,2021,SE,FT,Data Scientist,65720,EUR,77684,FR,50,FR,M
|
||||
275,2021,EN,FT,Data Scientist,100000,USD,100000,US,100,US,M
|
||||
276,2021,EN,FT,Data Scientist,58000,USD,58000,US,50,US,L
|
||||
277,2021,SE,FT,AI Scientist,55000,USD,55000,ES,100,ES,L
|
||||
278,2021,SE,FT,Data Scientist,180000,TRY,20171,TR,50,TR,L
|
||||
279,2021,EN,FT,Business Data Analyst,50000,EUR,59102,LU,100,LU,L
|
||||
280,2021,MI,FT,Data Engineer,112000,USD,112000,US,100,US,L
|
||||
281,2021,EN,FT,Research Scientist,100000,USD,100000,JE,0,CN,L
|
||||
282,2021,MI,PT,Data Engineer,59000,EUR,69741,NL,100,NL,L
|
||||
283,2021,SE,CT,Staff Data Scientist,105000,USD,105000,US,100,US,M
|
||||
284,2021,MI,FT,Research Scientist,69999,USD,69999,CZ,50,CZ,L
|
||||
285,2021,SE,FT,Data Science Manager,7000000,INR,94665,IN,50,IN,L
|
||||
286,2021,SE,FT,Head of Data,87000,EUR,102839,SI,100,SI,L
|
||||
287,2021,MI,FT,Data Scientist,109000,USD,109000,US,50,US,L
|
||||
288,2021,MI,FT,Machine Learning Engineer,43200,EUR,51064,IT,50,IT,L
|
||||
289,2022,SE,FT,Data Engineer,135000,USD,135000,US,100,US,M
|
||||
290,2022,SE,FT,Data Analyst,155000,USD,155000,US,100,US,M
|
||||
291,2022,SE,FT,Data Analyst,120600,USD,120600,US,100,US,M
|
||||
292,2022,MI,FT,Data Scientist,130000,USD,130000,US,0,US,M
|
||||
293,2022,MI,FT,Data Scientist,90000,USD,90000,US,0,US,M
|
||||
294,2022,MI,FT,Data Engineer,170000,USD,170000,US,100,US,M
|
||||
295,2022,MI,FT,Data Engineer,150000,USD,150000,US,100,US,M
|
||||
296,2022,SE,FT,Data Analyst,102100,USD,102100,US,100,US,M
|
||||
297,2022,SE,FT,Data Analyst,84900,USD,84900,US,100,US,M
|
||||
298,2022,SE,FT,Data Scientist,136620,USD,136620,US,100,US,M
|
||||
299,2022,SE,FT,Data Scientist,99360,USD,99360,US,100,US,M
|
||||
300,2022,SE,FT,Data Scientist,90000,GBP,117789,GB,0,GB,M
|
||||
301,2022,SE,FT,Data Scientist,80000,GBP,104702,GB,0,GB,M
|
||||
302,2022,SE,FT,Data Scientist,146000,USD,146000,US,100,US,M
|
||||
303,2022,SE,FT,Data Scientist,123000,USD,123000,US,100,US,M
|
||||
304,2022,EN,FT,Data Engineer,40000,GBP,52351,GB,100,GB,M
|
||||
305,2022,SE,FT,Data Analyst,99000,USD,99000,US,0,US,M
|
||||
306,2022,SE,FT,Data Analyst,116000,USD,116000,US,0,US,M
|
||||
307,2022,MI,FT,Data Analyst,106260,USD,106260,US,0,US,M
|
||||
308,2022,MI,FT,Data Analyst,126500,USD,126500,US,0,US,M
|
||||
309,2022,EX,FT,Data Engineer,242000,USD,242000,US,100,US,M
|
||||
310,2022,EX,FT,Data Engineer,200000,USD,200000,US,100,US,M
|
||||
311,2022,MI,FT,Data Scientist,50000,GBP,65438,GB,0,GB,M
|
||||
312,2022,MI,FT,Data Scientist,30000,GBP,39263,GB,0,GB,M
|
||||
313,2022,MI,FT,Data Engineer,60000,GBP,78526,GB,0,GB,M
|
||||
314,2022,MI,FT,Data Engineer,40000,GBP,52351,GB,0,GB,M
|
||||
315,2022,SE,FT,Data Scientist,165220,USD,165220,US,100,US,M
|
||||
316,2022,EN,FT,Data Engineer,35000,GBP,45807,GB,100,GB,M
|
||||
317,2022,SE,FT,Data Scientist,120160,USD,120160,US,100,US,M
|
||||
318,2022,SE,FT,Data Analyst,90320,USD,90320,US,100,US,M
|
||||
319,2022,SE,FT,Data Engineer,181940,USD,181940,US,0,US,M
|
||||
320,2022,SE,FT,Data Engineer,132320,USD,132320,US,0,US,M
|
||||
321,2022,SE,FT,Data Engineer,220110,USD,220110,US,0,US,M
|
||||
322,2022,SE,FT,Data Engineer,160080,USD,160080,US,0,US,M
|
||||
323,2022,SE,FT,Data Scientist,180000,USD,180000,US,0,US,L
|
||||
324,2022,SE,FT,Data Scientist,120000,USD,120000,US,0,US,L
|
||||
325,2022,SE,FT,Data Analyst,124190,USD,124190,US,100,US,M
|
||||
326,2022,EX,FT,Data Analyst,130000,USD,130000,US,100,US,M
|
||||
327,2022,EX,FT,Data Analyst,110000,USD,110000,US,100,US,M
|
||||
328,2022,SE,FT,Data Analyst,170000,USD,170000,US,100,US,M
|
||||
329,2022,MI,FT,Data Analyst,115500,USD,115500,US,100,US,M
|
||||
330,2022,SE,FT,Data Analyst,112900,USD,112900,US,100,US,M
|
||||
331,2022,SE,FT,Data Analyst,90320,USD,90320,US,100,US,M
|
||||
332,2022,SE,FT,Data Analyst,112900,USD,112900,US,100,US,M
|
||||
333,2022,SE,FT,Data Analyst,90320,USD,90320,US,100,US,M
|
||||
334,2022,SE,FT,Data Engineer,165400,USD,165400,US,100,US,M
|
||||
335,2022,SE,FT,Data Engineer,132320,USD,132320,US,100,US,M
|
||||
336,2022,MI,FT,Data Analyst,167000,USD,167000,US,100,US,M
|
||||
337,2022,SE,FT,Data Engineer,243900,USD,243900,US,100,US,M
|
||||
338,2022,SE,FT,Data Analyst,136600,USD,136600,US,100,US,M
|
||||
339,2022,SE,FT,Data Analyst,109280,USD,109280,US,100,US,M
|
||||
340,2022,SE,FT,Data Engineer,128875,USD,128875,US,100,US,M
|
||||
341,2022,SE,FT,Data Engineer,93700,USD,93700,US,100,US,M
|
||||
342,2022,EX,FT,Head of Data Science,224000,USD,224000,US,100,US,M
|
||||
343,2022,EX,FT,Head of Data Science,167875,USD,167875,US,100,US,M
|
||||
344,2022,EX,FT,Analytics Engineer,175000,USD,175000,US,100,US,M
|
||||
345,2022,SE,FT,Data Engineer,156600,USD,156600,US,100,US,M
|
||||
346,2022,SE,FT,Data Engineer,108800,USD,108800,US,0,US,M
|
||||
347,2022,SE,FT,Data Scientist,95550,USD,95550,US,0,US,M
|
||||
348,2022,SE,FT,Data Engineer,113000,USD,113000,US,0,US,L
|
||||
349,2022,SE,FT,Data Analyst,135000,USD,135000,US,100,US,M
|
||||
350,2022,SE,FT,Data Science Manager,161342,USD,161342,US,100,US,M
|
||||
351,2022,SE,FT,Data Science Manager,137141,USD,137141,US,100,US,M
|
||||
352,2022,SE,FT,Data Scientist,167000,USD,167000,US,100,US,M
|
||||
353,2022,SE,FT,Data Scientist,123000,USD,123000,US,100,US,M
|
||||
354,2022,SE,FT,Data Engineer,60000,GBP,78526,GB,0,GB,M
|
||||
355,2022,SE,FT,Data Engineer,50000,GBP,65438,GB,0,GB,M
|
||||
356,2022,SE,FT,Data Scientist,150000,USD,150000,US,0,US,M
|
||||
357,2022,SE,FT,Data Scientist,211500,USD,211500,US,100,US,M
|
||||
358,2022,SE,FT,Data Architect,192400,USD,192400,CA,100,CA,M
|
||||
359,2022,SE,FT,Data Architect,90700,USD,90700,CA,100,CA,M
|
||||
360,2022,SE,FT,Data Analyst,130000,USD,130000,CA,100,CA,M
|
||||
361,2022,SE,FT,Data Analyst,61300,USD,61300,CA,100,CA,M
|
||||
362,2022,SE,FT,Data Analyst,130000,USD,130000,CA,100,CA,M
|
||||
363,2022,SE,FT,Data Analyst,61300,USD,61300,CA,100,CA,M
|
||||
364,2022,SE,FT,Data Engineer,160000,USD,160000,US,0,US,L
|
||||
365,2022,SE,FT,Data Scientist,138600,USD,138600,US,100,US,M
|
||||
366,2022,SE,FT,Data Engineer,136000,USD,136000,US,0,US,M
|
||||
367,2022,MI,FT,Data Analyst,58000,USD,58000,US,0,US,S
|
||||
368,2022,EX,FT,Analytics Engineer,135000,USD,135000,US,100,US,M
|
||||
369,2022,SE,FT,Data Scientist,170000,USD,170000,US,100,US,M
|
||||
370,2022,SE,FT,Data Scientist,123000,USD,123000,US,100,US,M
|
||||
371,2022,SE,FT,Machine Learning Engineer,189650,USD,189650,US,0,US,M
|
||||
372,2022,SE,FT,Machine Learning Engineer,164996,USD,164996,US,0,US,M
|
||||
373,2022,MI,FT,ETL Developer,50000,EUR,54957,GR,0,GR,M
|
||||
374,2022,MI,FT,ETL Developer,50000,EUR,54957,GR,0,GR,M
|
||||
375,2022,EX,FT,Lead Data Engineer,150000,CAD,118187,CA,100,CA,S
|
||||
376,2022,SE,FT,Data Analyst,132000,USD,132000,US,0,US,M
|
||||
377,2022,SE,FT,Data Engineer,165400,USD,165400,US,100,US,M
|
||||
378,2022,SE,FT,Data Architect,208775,USD,208775,US,100,US,M
|
||||
379,2022,SE,FT,Data Architect,147800,USD,147800,US,100,US,M
|
||||
380,2022,SE,FT,Data Engineer,136994,USD,136994,US,100,US,M
|
||||
381,2022,SE,FT,Data Engineer,101570,USD,101570,US,100,US,M
|
||||
382,2022,SE,FT,Data Analyst,128875,USD,128875,US,100,US,M
|
||||
383,2022,SE,FT,Data Analyst,93700,USD,93700,US,100,US,M
|
||||
384,2022,EX,FT,Head of Machine Learning,6000000,INR,79039,IN,50,IN,L
|
||||
385,2022,SE,FT,Data Engineer,132320,USD,132320,US,100,US,M
|
||||
386,2022,EN,FT,Machine Learning Engineer,28500,GBP,37300,GB,100,GB,L
|
||||
387,2022,SE,FT,Data Analyst,164000,USD,164000,US,0,US,M
|
||||
388,2022,SE,FT,Data Engineer,155000,USD,155000,US,100,US,M
|
||||
389,2022,MI,FT,Machine Learning Engineer,95000,GBP,124333,GB,0,GB,M
|
||||
390,2022,MI,FT,Machine Learning Engineer,75000,GBP,98158,GB,0,GB,M
|
||||
391,2022,MI,FT,AI Scientist,120000,USD,120000,US,0,US,M
|
||||
392,2022,SE,FT,Data Analyst,112900,USD,112900,US,100,US,M
|
||||
393,2022,SE,FT,Data Analyst,90320,USD,90320,US,100,US,M
|
||||
394,2022,SE,FT,Data Analytics Manager,145000,USD,145000,US,100,US,M
|
||||
395,2022,SE,FT,Data Analytics Manager,105400,USD,105400,US,100,US,M
|
||||
396,2022,MI,FT,Machine Learning Engineer,80000,EUR,87932,FR,100,DE,M
|
||||
397,2022,MI,FT,Data Engineer,90000,GBP,117789,GB,0,GB,M
|
||||
398,2022,SE,FT,Data Scientist,215300,USD,215300,US,100,US,L
|
||||
399,2022,SE,FT,Data Scientist,158200,USD,158200,US,100,US,L
|
||||
400,2022,SE,FT,Data Engineer,209100,USD,209100,US,100,US,L
|
||||
401,2022,SE,FT,Data Engineer,154600,USD,154600,US,100,US,L
|
||||
402,2022,SE,FT,Data Analyst,115934,USD,115934,US,0,US,M
|
||||
403,2022,SE,FT,Data Analyst,81666,USD,81666,US,0,US,M
|
||||
404,2022,SE,FT,Data Engineer,175000,USD,175000,US,100,US,M
|
||||
405,2022,MI,FT,Data Engineer,75000,GBP,98158,GB,0,GB,M
|
||||
406,2022,MI,FT,Data Analyst,58000,USD,58000,US,0,US,S
|
||||
407,2022,SE,FT,Data Engineer,183600,USD,183600,US,100,US,L
|
||||
408,2022,MI,FT,Data Analyst,40000,GBP,52351,GB,100,GB,M
|
||||
409,2022,SE,FT,Data Scientist,180000,USD,180000,US,100,US,M
|
||||
410,2022,MI,FT,Data Scientist,55000,GBP,71982,GB,0,GB,M
|
||||
411,2022,MI,FT,Data Scientist,35000,GBP,45807,GB,0,GB,M
|
||||
412,2022,MI,FT,Data Engineer,60000,EUR,65949,GR,100,GR,M
|
||||
413,2022,MI,FT,Data Engineer,45000,EUR,49461,GR,100,GR,M
|
||||
414,2022,MI,FT,Data Engineer,60000,GBP,78526,GB,100,GB,M
|
||||
415,2022,MI,FT,Data Engineer,45000,GBP,58894,GB,100,GB,M
|
||||
416,2022,SE,FT,Data Scientist,260000,USD,260000,US,100,US,M
|
||||
417,2022,SE,FT,Data Science Engineer,60000,USD,60000,AR,100,MX,L
|
||||
418,2022,MI,FT,Data Engineer,63900,USD,63900,US,0,US,M
|
||||
419,2022,MI,FT,Machine Learning Scientist,160000,USD,160000,US,100,US,L
|
||||
420,2022,MI,FT,Machine Learning Scientist,112300,USD,112300,US,100,US,L
|
||||
421,2022,MI,FT,Data Science Manager,241000,USD,241000,US,100,US,M
|
||||
422,2022,MI,FT,Data Science Manager,159000,USD,159000,US,100,US,M
|
||||
423,2022,SE,FT,Data Scientist,180000,USD,180000,US,0,US,M
|
||||
424,2022,SE,FT,Data Scientist,80000,USD,80000,US,0,US,M
|
||||
425,2022,MI,FT,Data Engineer,82900,USD,82900,US,0,US,M
|
||||
426,2022,SE,FT,Data Engineer,100800,USD,100800,US,100,US,L
|
||||
427,2022,MI,FT,Data Engineer,45000,EUR,49461,ES,100,ES,M
|
||||
428,2022,SE,FT,Data Scientist,140400,USD,140400,US,0,US,L
|
||||
429,2022,MI,FT,Data Analyst,30000,GBP,39263,GB,100,GB,M
|
||||
430,2022,MI,FT,Data Analyst,40000,EUR,43966,ES,100,ES,M
|
||||
431,2022,MI,FT,Data Analyst,30000,EUR,32974,ES,100,ES,M
|
||||
432,2022,MI,FT,Data Engineer,80000,EUR,87932,ES,100,ES,M
|
||||
433,2022,MI,FT,Data Engineer,70000,EUR,76940,ES,100,ES,M
|
||||
434,2022,MI,FT,Data Engineer,80000,GBP,104702,GB,100,GB,M
|
||||
435,2022,MI,FT,Data Engineer,70000,GBP,91614,GB,100,GB,M
|
||||
436,2022,MI,FT,Data Engineer,60000,EUR,65949,ES,100,ES,M
|
||||
437,2022,MI,FT,Data Engineer,80000,EUR,87932,GR,100,GR,M
|
||||
438,2022,SE,FT,Machine Learning Engineer,189650,USD,189650,US,0,US,M
|
||||
439,2022,SE,FT,Machine Learning Engineer,164996,USD,164996,US,0,US,M
|
||||
440,2022,MI,FT,Data Analyst,40000,EUR,43966,GR,100,GR,M
|
||||
441,2022,MI,FT,Data Analyst,30000,EUR,32974,GR,100,GR,M
|
||||
442,2022,MI,FT,Data Engineer,75000,GBP,98158,GB,100,GB,M
|
||||
443,2022,MI,FT,Data Engineer,60000,GBP,78526,GB,100,GB,M
|
||||
444,2022,SE,FT,Data Scientist,215300,USD,215300,US,0,US,L
|
||||
445,2022,MI,FT,Data Engineer,70000,EUR,76940,GR,100,GR,M
|
||||
446,2022,SE,FT,Data Engineer,209100,USD,209100,US,100,US,L
|
||||
447,2022,SE,FT,Data Engineer,154600,USD,154600,US,100,US,L
|
||||
448,2022,SE,FT,Data Engineer,180000,USD,180000,US,100,US,M
|
||||
449,2022,EN,FT,ML Engineer,20000,EUR,21983,PT,100,PT,L
|
||||
450,2022,SE,FT,Data Engineer,80000,USD,80000,US,100,US,M
|
||||
451,2022,MI,FT,Machine Learning Developer,100000,CAD,78791,CA,100,CA,M
|
||||
452,2022,EX,FT,Director of Data Science,250000,CAD,196979,CA,50,CA,L
|
||||
453,2022,MI,FT,Machine Learning Engineer,120000,USD,120000,US,100,US,S
|
||||
454,2022,EN,FT,Computer Vision Engineer,125000,USD,125000,US,0,US,M
|
||||
455,2022,MI,FT,NLP Engineer,240000,CNY,37236,US,50,US,L
|
||||
456,2022,SE,FT,Data Engineer,105000,USD,105000,US,100,US,M
|
||||
457,2022,SE,FT,Lead Machine Learning Engineer,80000,EUR,87932,DE,0,DE,M
|
||||
458,2022,MI,FT,Business Data Analyst,1400000,INR,18442,IN,100,IN,M
|
||||
459,2022,MI,FT,Data Scientist,2400000,INR,31615,IN,100,IN,L
|
||||
460,2022,MI,FT,Machine Learning Infrastructure Engineer,53000,EUR,58255,PT,50,PT,L
|
||||
461,2022,EN,FT,Financial Data Analyst,100000,USD,100000,US,50,US,L
|
||||
462,2022,MI,PT,Data Engineer,50000,EUR,54957,DE,50,DE,L
|
||||
463,2022,EN,FT,Data Scientist,1400000,INR,18442,IN,100,IN,M
|
||||
464,2022,SE,FT,Principal Data Scientist,148000,EUR,162674,DE,100,DE,M
|
||||
465,2022,EN,FT,Data Engineer,120000,USD,120000,US,100,US,M
|
||||
466,2022,SE,FT,Research Scientist,144000,USD,144000,US,50,US,L
|
||||
467,2022,SE,FT,Data Scientist,104890,USD,104890,US,100,US,M
|
||||
468,2022,SE,FT,Data Engineer,100000,USD,100000,US,100,US,M
|
||||
469,2022,SE,FT,Data Scientist,140000,USD,140000,US,100,US,M
|
||||
470,2022,MI,FT,Data Analyst,135000,USD,135000,US,100,US,M
|
||||
471,2022,MI,FT,Data Analyst,50000,USD,50000,US,100,US,M
|
||||
472,2022,SE,FT,Data Scientist,220000,USD,220000,US,100,US,M
|
||||
473,2022,SE,FT,Data Scientist,140000,USD,140000,US,100,US,M
|
||||
474,2022,MI,FT,Data Scientist,140000,GBP,183228,GB,0,GB,M
|
||||
475,2022,MI,FT,Data Scientist,70000,GBP,91614,GB,0,GB,M
|
||||
476,2022,SE,FT,Data Scientist,185100,USD,185100,US,100,US,M
|
||||
477,2022,SE,FT,Machine Learning Engineer,220000,USD,220000,US,100,US,M
|
||||
478,2022,MI,FT,Data Scientist,200000,USD,200000,US,100,US,M
|
||||
479,2022,MI,FT,Data Scientist,120000,USD,120000,US,100,US,M
|
||||
480,2022,SE,FT,Machine Learning Engineer,120000,USD,120000,AE,100,AE,S
|
||||
481,2022,SE,FT,Machine Learning Engineer,65000,USD,65000,AE,100,AE,S
|
||||
482,2022,EX,FT,Data Engineer,324000,USD,324000,US,100,US,M
|
||||
483,2022,EX,FT,Data Engineer,216000,USD,216000,US,100,US,M
|
||||
484,2022,SE,FT,Data Engineer,210000,USD,210000,US,100,US,M
|
||||
485,2022,SE,FT,Machine Learning Engineer,120000,USD,120000,US,100,US,M
|
||||
486,2022,SE,FT,Data Scientist,230000,USD,230000,US,100,US,M
|
||||
487,2022,EN,PT,Data Scientist,100000,USD,100000,DZ,50,DZ,M
|
||||
488,2022,MI,FL,Data Scientist,100000,USD,100000,CA,100,US,M
|
||||
489,2022,EN,CT,Applied Machine Learning Scientist,29000,EUR,31875,TN,100,CZ,M
|
||||
490,2022,SE,FT,Head of Data,200000,USD,200000,MY,100,US,M
|
||||
491,2022,MI,FT,Principal Data Analyst,75000,USD,75000,CA,100,CA,S
|
||||
492,2022,MI,FT,Data Scientist,150000,PLN,35590,PL,100,PL,L
|
||||
493,2022,SE,FT,Machine Learning Developer,100000,CAD,78791,CA,100,CA,M
|
||||
494,2022,SE,FT,Data Scientist,100000,USD,100000,BR,100,US,M
|
||||
495,2022,MI,FT,Machine Learning Scientist,153000,USD,153000,US,50,US,M
|
||||
496,2022,EN,FT,Data Engineer,52800,EUR,58035,PK,100,DE,M
|
||||
497,2022,SE,FT,Data Scientist,165000,USD,165000,US,100,US,M
|
||||
498,2022,SE,FT,Research Scientist,85000,EUR,93427,FR,50,FR,L
|
||||
499,2022,EN,FT,Data Scientist,66500,CAD,52396,CA,100,CA,L
|
||||
500,2022,SE,FT,Machine Learning Engineer,57000,EUR,62651,NL,100,NL,L
|
||||
501,2022,MI,FT,Head of Data,30000,EUR,32974,EE,100,EE,S
|
||||
502,2022,EN,FT,Data Scientist,40000,USD,40000,JP,100,MY,L
|
||||
503,2022,MI,FT,Machine Learning Engineer,121000,AUD,87425,AU,100,AU,L
|
||||
504,2022,SE,FT,Data Engineer,115000,USD,115000,US,100,US,M
|
||||
505,2022,EN,FT,Data Scientist,120000,AUD,86703,AU,50,AU,M
|
||||
506,2022,MI,FT,Applied Machine Learning Scientist,75000,USD,75000,BO,100,US,L
|
||||
507,2022,MI,FT,Research Scientist,59000,EUR,64849,AT,0,AT,L
|
||||
508,2022,EN,FT,Research Scientist,120000,USD,120000,US,100,US,L
|
||||
509,2022,MI,FT,Applied Data Scientist,157000,USD,157000,US,100,US,L
|
||||
510,2022,EN,FT,Computer Vision Software Engineer,150000,USD,150000,AU,100,AU,S
|
||||
511,2022,MI,FT,Business Data Analyst,90000,CAD,70912,CA,50,CA,L
|
||||
512,2022,EN,FT,Data Engineer,65000,USD,65000,US,100,US,S
|
||||
513,2022,SE,FT,Machine Learning Engineer,65000,EUR,71444,IE,100,IE,S
|
||||
514,2022,EN,FT,Data Analytics Engineer,20000,USD,20000,PK,0,PK,M
|
||||
515,2022,MI,FT,Data Scientist,48000,USD,48000,RU,100,US,S
|
||||
516,2022,SE,FT,Data Science Manager,152500,USD,152500,US,100,US,M
|
||||
517,2022,MI,FT,Data Engineer,62000,EUR,68147,FR,100,FR,M
|
||||
518,2022,MI,FT,Data Scientist,115000,CHF,122346,CH,0,CH,L
|
||||
519,2022,SE,FT,Applied Data Scientist,380000,USD,380000,US,100,US,L
|
||||
520,2022,MI,FT,Data Scientist,88000,CAD,69336,CA,100,CA,M
|
||||
521,2022,EN,FT,Computer Vision Engineer,10000,USD,10000,PT,100,LU,M
|
||||
522,2022,MI,FT,Data Analyst,20000,USD,20000,GR,100,GR,S
|
||||
523,2022,SE,FT,Data Analytics Lead,405000,USD,405000,US,100,US,L
|
||||
524,2022,MI,FT,Data Scientist,135000,USD,135000,US,100,US,L
|
||||
525,2022,SE,FT,Applied Data Scientist,177000,USD,177000,US,100,US,L
|
||||
526,2022,MI,FT,Data Scientist,78000,USD,78000,US,100,US,M
|
||||
527,2022,SE,FT,Data Analyst,135000,USD,135000,US,100,US,M
|
||||
528,2022,SE,FT,Data Analyst,100000,USD,100000,US,100,US,M
|
||||
529,2022,SE,FT,Data Analyst,90320,USD,90320,US,100,US,M
|
||||
530,2022,MI,FT,Data Analyst,85000,USD,85000,CA,0,CA,M
|
||||
531,2022,MI,FT,Data Analyst,75000,USD,75000,CA,0,CA,M
|
||||
532,2022,SE,FT,Machine Learning Engineer,214000,USD,214000,US,100,US,M
|
||||
533,2022,SE,FT,Machine Learning Engineer,192600,USD,192600,US,100,US,M
|
||||
534,2022,SE,FT,Data Architect,266400,USD,266400,US,100,US,M
|
||||
535,2022,SE,FT,Data Architect,213120,USD,213120,US,100,US,M
|
||||
536,2022,SE,FT,Data Analyst,112900,USD,112900,US,100,US,M
|
||||
537,2022,SE,FT,Data Engineer,155000,USD,155000,US,100,US,M
|
||||
538,2022,MI,FT,Data Scientist,141300,USD,141300,US,0,US,M
|
||||
539,2022,MI,FT,Data Scientist,102100,USD,102100,US,0,US,M
|
||||
540,2022,SE,FT,Data Analyst,115934,USD,115934,US,100,US,M
|
||||
541,2022,SE,FT,Data Analyst,81666,USD,81666,US,100,US,M
|
||||
542,2022,MI,FT,Data Engineer,206699,USD,206699,US,0,US,M
|
||||
543,2022,MI,FT,Data Engineer,99100,USD,99100,US,0,US,M
|
||||
544,2022,SE,FT,Data Engineer,130000,USD,130000,US,100,US,M
|
||||
545,2022,SE,FT,Data Engineer,115000,USD,115000,US,100,US,M
|
||||
546,2022,SE,FT,Data Engineer,110500,USD,110500,US,100,US,M
|
||||
547,2022,SE,FT,Data Engineer,130000,USD,130000,US,100,US,M
|
||||
548,2022,SE,FT,Data Analyst,99050,USD,99050,US,100,US,M
|
||||
549,2022,SE,FT,Data Engineer,160000,USD,160000,US,100,US,M
|
||||
550,2022,SE,FT,Data Scientist,205300,USD,205300,US,0,US,L
|
||||
551,2022,SE,FT,Data Scientist,140400,USD,140400,US,0,US,L
|
||||
552,2022,SE,FT,Data Scientist,176000,USD,176000,US,100,US,M
|
||||
553,2022,SE,FT,Data Scientist,144000,USD,144000,US,100,US,M
|
||||
554,2022,SE,FT,Data Engineer,200100,USD,200100,US,100,US,M
|
||||
555,2022,SE,FT,Data Engineer,160000,USD,160000,US,100,US,M
|
||||
556,2022,SE,FT,Data Engineer,145000,USD,145000,US,100,US,M
|
||||
557,2022,SE,FT,Data Engineer,70500,USD,70500,US,0,US,M
|
||||
558,2022,SE,FT,Data Scientist,205300,USD,205300,US,0,US,M
|
||||
559,2022,SE,FT,Data Scientist,140400,USD,140400,US,0,US,M
|
||||
560,2022,SE,FT,Analytics Engineer,205300,USD,205300,US,0,US,M
|
||||
561,2022,SE,FT,Analytics Engineer,184700,USD,184700,US,0,US,M
|
||||
562,2022,SE,FT,Data Engineer,175100,USD,175100,US,100,US,M
|
||||
563,2022,SE,FT,Data Engineer,140250,USD,140250,US,100,US,M
|
||||
564,2022,SE,FT,Data Analyst,116150,USD,116150,US,100,US,M
|
||||
565,2022,SE,FT,Data Engineer,54000,USD,54000,US,0,US,M
|
||||
566,2022,SE,FT,Data Analyst,170000,USD,170000,US,100,US,M
|
||||
567,2022,MI,FT,Data Analyst,50000,GBP,65438,GB,0,GB,M
|
||||
568,2022,SE,FT,Data Analyst,80000,USD,80000,US,100,US,M
|
||||
569,2022,SE,FT,Data Scientist,140000,USD,140000,US,100,US,M
|
||||
570,2022,SE,FT,Data Scientist,210000,USD,210000,US,100,US,M
|
||||
571,2022,SE,FT,Data Scientist,140000,USD,140000,US,100,US,M
|
||||
572,2022,SE,FT,Data Analyst,100000,USD,100000,US,100,US,M
|
||||
573,2022,SE,FT,Data Analyst,69000,USD,69000,US,100,US,M
|
||||
574,2022,SE,FT,Data Scientist,210000,USD,210000,US,100,US,M
|
||||
575,2022,SE,FT,Data Scientist,140000,USD,140000,US,100,US,M
|
||||
576,2022,SE,FT,Data Scientist,210000,USD,210000,US,100,US,M
|
||||
577,2022,SE,FT,Data Analyst,150075,USD,150075,US,100,US,M
|
||||
578,2022,SE,FT,Data Engineer,100000,USD,100000,US,100,US,M
|
||||
579,2022,SE,FT,Data Engineer,25000,USD,25000,US,100,US,M
|
||||
580,2022,SE,FT,Data Analyst,126500,USD,126500,US,100,US,M
|
||||
581,2022,SE,FT,Data Analyst,106260,USD,106260,US,100,US,M
|
||||
582,2022,SE,FT,Data Engineer,220110,USD,220110,US,100,US,M
|
||||
583,2022,SE,FT,Data Engineer,160080,USD,160080,US,100,US,M
|
||||
584,2022,SE,FT,Data Analyst,105000,USD,105000,US,100,US,M
|
||||
585,2022,SE,FT,Data Analyst,110925,USD,110925,US,100,US,M
|
||||
586,2022,MI,FT,Data Analyst,35000,GBP,45807,GB,0,GB,M
|
||||
587,2022,SE,FT,Data Scientist,140000,USD,140000,US,100,US,M
|
||||
588,2022,SE,FT,Data Analyst,99000,USD,99000,US,0,US,M
|
||||
589,2022,SE,FT,Data Analyst,60000,USD,60000,US,100,US,M
|
||||
590,2022,SE,FT,Data Architect,192564,USD,192564,US,100,US,M
|
||||
591,2022,SE,FT,Data Architect,144854,USD,144854,US,100,US,M
|
||||
592,2022,SE,FT,Data Scientist,230000,USD,230000,US,100,US,M
|
||||
593,2022,SE,FT,Data Scientist,150000,USD,150000,US,100,US,M
|
||||
594,2022,SE,FT,Data Analytics Manager,150260,USD,150260,US,100,US,M
|
||||
595,2022,SE,FT,Data Analytics Manager,109280,USD,109280,US,100,US,M
|
||||
596,2022,SE,FT,Data Scientist,210000,USD,210000,US,100,US,M
|
||||
597,2022,SE,FT,Data Analyst,170000,USD,170000,US,100,US,M
|
||||
598,2022,MI,FT,Data Scientist,160000,USD,160000,US,100,US,M
|
||||
599,2022,MI,FT,Data Scientist,130000,USD,130000,US,100,US,M
|
||||
600,2022,EN,FT,Data Analyst,67000,USD,67000,CA,0,CA,M
|
||||
601,2022,EN,FT,Data Analyst,52000,USD,52000,CA,0,CA,M
|
||||
602,2022,SE,FT,Data Engineer,154000,USD,154000,US,100,US,M
|
||||
603,2022,SE,FT,Data Engineer,126000,USD,126000,US,100,US,M
|
||||
604,2022,SE,FT,Data Analyst,129000,USD,129000,US,0,US,M
|
||||
605,2022,SE,FT,Data Analyst,150000,USD,150000,US,100,US,M
|
||||
606,2022,MI,FT,AI Scientist,200000,USD,200000,IN,100,US,L
|
|
Before Width: | Height: | Size: 29 KiB |
@ -1,53 +0,0 @@
|
||||
import pandas as pd
|
||||
from sklearn.model_selection import train_test_split
|
||||
from sklearn.tree import DecisionTreeClassifier
|
||||
from sklearn.metrics import accuracy_score, mean_squared_error
|
||||
from sklearn.preprocessing import LabelEncoder
|
||||
|
||||
# Загрузка данных и удаление столбца 'Unnamed: 0'
|
||||
data = pd.read_csv('ds_salaries.csv').drop('Unnamed: 0', axis=1)
|
||||
|
||||
# Определение признаков и целевой переменной
|
||||
features = ['experience_level', 'employment_type', 'company_location', 'company_size']
|
||||
target = 'job_title'
|
||||
|
||||
# Преобразование категориальных признаков в числовые
|
||||
label_encoder = LabelEncoder()
|
||||
for feature in features:
|
||||
data[feature] = label_encoder.fit_transform(data[feature])
|
||||
|
||||
# Преобразование целевой переменной в числовой формат
|
||||
data[target] = label_encoder.fit_transform(data[target])
|
||||
|
||||
# Разделение данных на обучающий (99%) и тестовый (1%) наборы
|
||||
train_data, test_data = train_test_split(data, test_size=0.01, random_state=42)
|
||||
|
||||
# Создание модели дерева решений
|
||||
model = DecisionTreeClassifier(random_state=42)
|
||||
|
||||
# Обучение модели
|
||||
model.fit(train_data[features], train_data[target])
|
||||
|
||||
# Предсказание на тестовом наборе
|
||||
predictions = model.predict(test_data[features])
|
||||
|
||||
# Обратное преобразование числовых предсказаний в строковый формат
|
||||
predictions_str = label_encoder.inverse_transform(predictions)
|
||||
|
||||
# Оценка точности модели на тестовом наборе
|
||||
accuracy = accuracy_score(test_data[target], predictions)
|
||||
print(f'Accuracy: {accuracy * 100:.2f}%')
|
||||
|
||||
# Средняя квадратичная ошибка в процентах
|
||||
mse = mean_squared_error(test_data[target], predictions)
|
||||
print(f'Mean Squared Error: {mse:.2f}%')
|
||||
|
||||
feature_importance = model.feature_importances_
|
||||
feature_importance_dict = dict(zip(features, feature_importance))
|
||||
sorted_feature_importance = sorted(feature_importance_dict.items(), key=lambda x: x[1], reverse=True)
|
||||
print("Feature Importance:")
|
||||
for feature, importance in sorted_feature_importance:
|
||||
print(f"{feature}: {importance}")
|
||||
|
||||
print("First 5 rows of test data:")
|
||||
print(test_data.head())
|
@ -1,74 +0,0 @@
|
||||
# Лабораторная 4
|
||||
## Вариант 9
|
||||
|
||||
## Задание
|
||||
Использовать метод кластеризации t-SNE,самостоятельно сформулировав задачу. Интерпретировать результаты и оценить, насколько хорошо он подходит для решения сформулированной вамизадачи.
|
||||
|
||||
Задача:
|
||||
- Можно использовать кластеризацию для группировки компаний на основе их местоположения (company_location) и размера (company_size). Это поможет выделить группы компаний с похожими характеристиками.
|
||||
|
||||
## Описание Программы
|
||||
Программа выполняет кластеризацию компаний на основе их местоположения (company_location) и размера (company_size) с использованием методов t-SNE и KMeans.
|
||||
|
||||
### Используемые библиотеки
|
||||
`pandas:`
|
||||
|
||||
Используется для загрузки данных из CSV-файла и работы с ними в виде датафрейма (pd.read_csv, pd.DataFrame).
|
||||
|
||||
`LabelEncoder (из scikit-learn):`
|
||||
|
||||
Применяется для преобразования категориальных переменных (company_location и company_size) в числовые значения (le.fit_transform).
|
||||
|
||||
`TSNE (из scikit-learn):`
|
||||
|
||||
Используется для выполнения уменьшения размерности данных с помощью метода t-SNE (TSNE(n_components=2, random_state=42)).
|
||||
|
||||
`KMeans (из scikit-learn):`
|
||||
|
||||
Применяется для кластеризации данных методом KMeans (KMeans(n_clusters=3, random_state=42)).
|
||||
|
||||
`matplotlib и seaborn:`
|
||||
|
||||
Используются для визуализации данных и построения графика, который отображает результаты кластеризации (plt.figure, sns.scatterplot, plt.title, plt.show).
|
||||
|
||||
### Шаги программы
|
||||
|
||||
**Загрузка данных:**
|
||||
|
||||
Данные о компаниях загружаются из CSV-файла "ds_salaries.csv" с использованием pandas.
|
||||
|
||||
**Преобразование категориальных переменных:**
|
||||
|
||||
Местоположение компаний (company_location) и их размер (company_size) преобразуются из категориальных в числовые значения с помощью LabelEncoder.
|
||||
|
||||
**Выбор признаков:**
|
||||
|
||||
Выбираются признаки для анализа, в данном случае, местоположение и размер компаний.
|
||||
|
||||
**Уменьшение размерности с использованием t-SNE:**
|
||||
|
||||
Применяется метод t-SNE для уменьшения размерности данных до двух компонент.
|
||||
|
||||
**Кластеризация данных с использованием KMeans:**
|
||||
|
||||
Кластеризация данных выполняется с помощью метода KMeans с 3 кластерами, определенными на основе результата t-SNE.
|
||||
|
||||
**Создание и визуализация нового датафрейма:**
|
||||
|
||||
Создается новый датафрейм (data_tsne_df), содержащий новые координаты компаний после применения t-SNE, а также метки кластеров.
|
||||
Добавляется номер кластера к исходным данным.
|
||||
|
||||
**Визуализация кластеров:**
|
||||
|
||||
Выполняется визуализация результатов кластеризации с использованием библиотеки seaborn.
|
||||
|
||||
### Запуск программы
|
||||
- Склонировать или скачать код `main.py`.
|
||||
- Запустите файл в среде, поддерживающей выполнение Python. `python main.py`
|
||||
|
||||
### Результаты
|
||||
![](img.png)
|
||||
|
||||
На графике представлены компании в двумерном пространстве, где каждая точка относится к конкретному кластеру. Различные цвета точек обозначают принадлежность к разным кластерам.
|
||||
|
||||
Кластеры можно рассматривать как группы компаний с схожими характеристиками местоположения и размера. Компании, находящиеся близко в двумерном пространстве, могут иметь схожие характеристики.
|
@ -1,608 +0,0 @@
|
||||
,work_year,experience_level,employment_type,job_title,salary,salary_currency,salary_in_usd,employee_residence,remote_ratio,company_location,company_size
|
||||
0,2020,MI,FT,Data Scientist,70000,EUR,79833,DE,0,DE,L
|
||||
1,2020,SE,FT,Machine Learning Scientist,260000,USD,260000,JP,0,JP,S
|
||||
2,2020,SE,FT,Big Data Engineer,85000,GBP,109024,GB,50,GB,M
|
||||
3,2020,MI,FT,Product Data Analyst,20000,USD,20000,HN,0,HN,S
|
||||
4,2020,SE,FT,Machine Learning Engineer,150000,USD,150000,US,50,US,L
|
||||
5,2020,EN,FT,Data Analyst,72000,USD,72000,US,100,US,L
|
||||
6,2020,SE,FT,Lead Data Scientist,190000,USD,190000,US,100,US,S
|
||||
7,2020,MI,FT,Data Scientist,11000000,HUF,35735,HU,50,HU,L
|
||||
8,2020,MI,FT,Business Data Analyst,135000,USD,135000,US,100,US,L
|
||||
9,2020,SE,FT,Lead Data Engineer,125000,USD,125000,NZ,50,NZ,S
|
||||
10,2020,EN,FT,Data Scientist,45000,EUR,51321,FR,0,FR,S
|
||||
11,2020,MI,FT,Data Scientist,3000000,INR,40481,IN,0,IN,L
|
||||
12,2020,EN,FT,Data Scientist,35000,EUR,39916,FR,0,FR,M
|
||||
13,2020,MI,FT,Lead Data Analyst,87000,USD,87000,US,100,US,L
|
||||
14,2020,MI,FT,Data Analyst,85000,USD,85000,US,100,US,L
|
||||
15,2020,MI,FT,Data Analyst,8000,USD,8000,PK,50,PK,L
|
||||
16,2020,EN,FT,Data Engineer,4450000,JPY,41689,JP,100,JP,S
|
||||
17,2020,SE,FT,Big Data Engineer,100000,EUR,114047,PL,100,GB,S
|
||||
18,2020,EN,FT,Data Science Consultant,423000,INR,5707,IN,50,IN,M
|
||||
19,2020,MI,FT,Lead Data Engineer,56000,USD,56000,PT,100,US,M
|
||||
20,2020,MI,FT,Machine Learning Engineer,299000,CNY,43331,CN,0,CN,M
|
||||
21,2020,MI,FT,Product Data Analyst,450000,INR,6072,IN,100,IN,L
|
||||
22,2020,SE,FT,Data Engineer,42000,EUR,47899,GR,50,GR,L
|
||||
23,2020,MI,FT,BI Data Analyst,98000,USD,98000,US,0,US,M
|
||||
24,2020,MI,FT,Lead Data Scientist,115000,USD,115000,AE,0,AE,L
|
||||
25,2020,EX,FT,Director of Data Science,325000,USD,325000,US,100,US,L
|
||||
26,2020,EN,FT,Research Scientist,42000,USD,42000,NL,50,NL,L
|
||||
27,2020,SE,FT,Data Engineer,720000,MXN,33511,MX,0,MX,S
|
||||
28,2020,EN,CT,Business Data Analyst,100000,USD,100000,US,100,US,L
|
||||
29,2020,SE,FT,Machine Learning Manager,157000,CAD,117104,CA,50,CA,L
|
||||
30,2020,MI,FT,Data Engineering Manager,51999,EUR,59303,DE,100,DE,S
|
||||
31,2020,EN,FT,Big Data Engineer,70000,USD,70000,US,100,US,L
|
||||
32,2020,SE,FT,Data Scientist,60000,EUR,68428,GR,100,US,L
|
||||
33,2020,MI,FT,Research Scientist,450000,USD,450000,US,0,US,M
|
||||
34,2020,MI,FT,Data Analyst,41000,EUR,46759,FR,50,FR,L
|
||||
35,2020,MI,FT,Data Engineer,65000,EUR,74130,AT,50,AT,L
|
||||
36,2020,MI,FT,Data Science Consultant,103000,USD,103000,US,100,US,L
|
||||
37,2020,EN,FT,Machine Learning Engineer,250000,USD,250000,US,50,US,L
|
||||
38,2020,EN,FT,Data Analyst,10000,USD,10000,NG,100,NG,S
|
||||
39,2020,EN,FT,Machine Learning Engineer,138000,USD,138000,US,100,US,S
|
||||
40,2020,MI,FT,Data Scientist,45760,USD,45760,PH,100,US,S
|
||||
41,2020,EX,FT,Data Engineering Manager,70000,EUR,79833,ES,50,ES,L
|
||||
42,2020,MI,FT,Machine Learning Infrastructure Engineer,44000,EUR,50180,PT,0,PT,M
|
||||
43,2020,MI,FT,Data Engineer,106000,USD,106000,US,100,US,L
|
||||
44,2020,MI,FT,Data Engineer,88000,GBP,112872,GB,50,GB,L
|
||||
45,2020,EN,PT,ML Engineer,14000,EUR,15966,DE,100,DE,S
|
||||
46,2020,MI,FT,Data Scientist,60000,GBP,76958,GB,100,GB,S
|
||||
47,2020,SE,FT,Data Engineer,188000,USD,188000,US,100,US,L
|
||||
48,2020,MI,FT,Data Scientist,105000,USD,105000,US,100,US,L
|
||||
49,2020,MI,FT,Data Engineer,61500,EUR,70139,FR,50,FR,L
|
||||
50,2020,EN,FT,Data Analyst,450000,INR,6072,IN,0,IN,S
|
||||
51,2020,EN,FT,Data Analyst,91000,USD,91000,US,100,US,L
|
||||
52,2020,EN,FT,AI Scientist,300000,DKK,45896,DK,50,DK,S
|
||||
53,2020,EN,FT,Data Engineer,48000,EUR,54742,PK,100,DE,L
|
||||
54,2020,SE,FL,Computer Vision Engineer,60000,USD,60000,RU,100,US,S
|
||||
55,2020,SE,FT,Principal Data Scientist,130000,EUR,148261,DE,100,DE,M
|
||||
56,2020,MI,FT,Data Scientist,34000,EUR,38776,ES,100,ES,M
|
||||
57,2020,MI,FT,Data Scientist,118000,USD,118000,US,100,US,M
|
||||
58,2020,SE,FT,Data Scientist,120000,USD,120000,US,50,US,L
|
||||
59,2020,MI,FT,Data Scientist,138350,USD,138350,US,100,US,M
|
||||
60,2020,MI,FT,Data Engineer,110000,USD,110000,US,100,US,L
|
||||
61,2020,MI,FT,Data Engineer,130800,USD,130800,ES,100,US,M
|
||||
62,2020,EN,PT,Data Scientist,19000,EUR,21669,IT,50,IT,S
|
||||
63,2020,SE,FT,Data Scientist,412000,USD,412000,US,100,US,L
|
||||
64,2020,SE,FT,Machine Learning Engineer,40000,EUR,45618,HR,100,HR,S
|
||||
65,2020,EN,FT,Data Scientist,55000,EUR,62726,DE,50,DE,S
|
||||
66,2020,EN,FT,Data Scientist,43200,EUR,49268,DE,0,DE,S
|
||||
67,2020,SE,FT,Data Science Manager,190200,USD,190200,US,100,US,M
|
||||
68,2020,EN,FT,Data Scientist,105000,USD,105000,US,100,US,S
|
||||
69,2020,SE,FT,Data Scientist,80000,EUR,91237,AT,0,AT,S
|
||||
70,2020,MI,FT,Data Scientist,55000,EUR,62726,FR,50,LU,S
|
||||
71,2020,MI,FT,Data Scientist,37000,EUR,42197,FR,50,FR,S
|
||||
72,2021,EN,FT,Research Scientist,60000,GBP,82528,GB,50,GB,L
|
||||
73,2021,EX,FT,BI Data Analyst,150000,USD,150000,IN,100,US,L
|
||||
74,2021,EX,FT,Head of Data,235000,USD,235000,US,100,US,L
|
||||
75,2021,SE,FT,Data Scientist,45000,EUR,53192,FR,50,FR,L
|
||||
76,2021,MI,FT,BI Data Analyst,100000,USD,100000,US,100,US,M
|
||||
77,2021,MI,PT,3D Computer Vision Researcher,400000,INR,5409,IN,50,IN,M
|
||||
78,2021,MI,CT,ML Engineer,270000,USD,270000,US,100,US,L
|
||||
79,2021,EN,FT,Data Analyst,80000,USD,80000,US,100,US,M
|
||||
80,2021,SE,FT,Data Analytics Engineer,67000,EUR,79197,DE,100,DE,L
|
||||
81,2021,MI,FT,Data Engineer,140000,USD,140000,US,100,US,L
|
||||
82,2021,MI,FT,Applied Data Scientist,68000,CAD,54238,GB,50,CA,L
|
||||
83,2021,MI,FT,Machine Learning Engineer,40000,EUR,47282,ES,100,ES,S
|
||||
84,2021,EX,FT,Director of Data Science,130000,EUR,153667,IT,100,PL,L
|
||||
85,2021,MI,FT,Data Engineer,110000,PLN,28476,PL,100,PL,L
|
||||
86,2021,EN,FT,Data Analyst,50000,EUR,59102,FR,50,FR,M
|
||||
87,2021,MI,FT,Data Analytics Engineer,110000,USD,110000,US,100,US,L
|
||||
88,2021,SE,FT,Lead Data Analyst,170000,USD,170000,US,100,US,L
|
||||
89,2021,SE,FT,Data Analyst,80000,USD,80000,BG,100,US,S
|
||||
90,2021,SE,FT,Marketing Data Analyst,75000,EUR,88654,GR,100,DK,L
|
||||
91,2021,EN,FT,Data Science Consultant,65000,EUR,76833,DE,100,DE,S
|
||||
92,2021,MI,FT,Lead Data Analyst,1450000,INR,19609,IN,100,IN,L
|
||||
93,2021,SE,FT,Lead Data Engineer,276000,USD,276000,US,0,US,L
|
||||
94,2021,EN,FT,Data Scientist,2200000,INR,29751,IN,50,IN,L
|
||||
95,2021,MI,FT,Cloud Data Engineer,120000,SGD,89294,SG,50,SG,L
|
||||
96,2021,EN,PT,AI Scientist,12000,USD,12000,BR,100,US,S
|
||||
97,2021,MI,FT,Financial Data Analyst,450000,USD,450000,US,100,US,L
|
||||
98,2021,EN,FT,Computer Vision Software Engineer,70000,USD,70000,US,100,US,M
|
||||
99,2021,MI,FT,Computer Vision Software Engineer,81000,EUR,95746,DE,100,US,S
|
||||
100,2021,MI,FT,Data Analyst,75000,USD,75000,US,0,US,L
|
||||
101,2021,SE,FT,Data Engineer,150000,USD,150000,US,100,US,L
|
||||
102,2021,MI,FT,BI Data Analyst,11000000,HUF,36259,HU,50,US,L
|
||||
103,2021,MI,FT,Data Analyst,62000,USD,62000,US,0,US,L
|
||||
104,2021,MI,FT,Data Scientist,73000,USD,73000,US,0,US,L
|
||||
105,2021,MI,FT,Data Analyst,37456,GBP,51519,GB,50,GB,L
|
||||
106,2021,MI,FT,Research Scientist,235000,CAD,187442,CA,100,CA,L
|
||||
107,2021,SE,FT,Data Engineer,115000,USD,115000,US,100,US,S
|
||||
108,2021,SE,FT,Data Engineer,150000,USD,150000,US,100,US,M
|
||||
109,2021,EN,FT,Data Engineer,2250000,INR,30428,IN,100,IN,L
|
||||
110,2021,SE,FT,Machine Learning Engineer,80000,EUR,94564,DE,50,DE,L
|
||||
111,2021,SE,FT,Director of Data Engineering,82500,GBP,113476,GB,100,GB,M
|
||||
112,2021,SE,FT,Lead Data Engineer,75000,GBP,103160,GB,100,GB,S
|
||||
113,2021,EN,PT,AI Scientist,12000,USD,12000,PK,100,US,M
|
||||
114,2021,MI,FT,Data Engineer,38400,EUR,45391,NL,100,NL,L
|
||||
115,2021,EN,FT,Machine Learning Scientist,225000,USD,225000,US,100,US,L
|
||||
116,2021,MI,FT,Data Scientist,50000,USD,50000,NG,100,NG,L
|
||||
117,2021,MI,FT,Data Science Engineer,34000,EUR,40189,GR,100,GR,M
|
||||
118,2021,EN,FT,Data Analyst,90000,USD,90000,US,100,US,S
|
||||
119,2021,MI,FT,Data Engineer,200000,USD,200000,US,100,US,L
|
||||
120,2021,MI,FT,Big Data Engineer,60000,USD,60000,ES,50,RO,M
|
||||
121,2021,SE,FT,Principal Data Engineer,200000,USD,200000,US,100,US,M
|
||||
122,2021,EN,FT,Data Analyst,50000,USD,50000,US,100,US,M
|
||||
123,2021,EN,FT,Applied Data Scientist,80000,GBP,110037,GB,0,GB,L
|
||||
124,2021,EN,PT,Data Analyst,8760,EUR,10354,ES,50,ES,M
|
||||
125,2021,MI,FT,Principal Data Scientist,151000,USD,151000,US,100,US,L
|
||||
126,2021,SE,FT,Machine Learning Scientist,120000,USD,120000,US,50,US,S
|
||||
127,2021,MI,FT,Data Scientist,700000,INR,9466,IN,0,IN,S
|
||||
128,2021,EN,FT,Machine Learning Engineer,20000,USD,20000,IN,100,IN,S
|
||||
129,2021,SE,FT,Lead Data Scientist,3000000,INR,40570,IN,50,IN,L
|
||||
130,2021,EN,FT,Machine Learning Developer,100000,USD,100000,IQ,50,IQ,S
|
||||
131,2021,EN,FT,Data Scientist,42000,EUR,49646,FR,50,FR,M
|
||||
132,2021,MI,FT,Applied Machine Learning Scientist,38400,USD,38400,VN,100,US,M
|
||||
133,2021,SE,FT,Computer Vision Engineer,24000,USD,24000,BR,100,BR,M
|
||||
134,2021,EN,FT,Data Scientist,100000,USD,100000,US,0,US,S
|
||||
135,2021,MI,FT,Data Analyst,90000,USD,90000,US,100,US,M
|
||||
136,2021,MI,FT,ML Engineer,7000000,JPY,63711,JP,50,JP,S
|
||||
137,2021,MI,FT,ML Engineer,8500000,JPY,77364,JP,50,JP,S
|
||||
138,2021,SE,FT,Principal Data Scientist,220000,USD,220000,US,0,US,L
|
||||
139,2021,EN,FT,Data Scientist,80000,USD,80000,US,100,US,M
|
||||
140,2021,MI,FT,Data Analyst,135000,USD,135000,US,100,US,L
|
||||
141,2021,SE,FT,Data Science Manager,240000,USD,240000,US,0,US,L
|
||||
142,2021,SE,FT,Data Engineering Manager,150000,USD,150000,US,0,US,L
|
||||
143,2021,MI,FT,Data Scientist,82500,USD,82500,US,100,US,S
|
||||
144,2021,MI,FT,Data Engineer,100000,USD,100000,US,100,US,L
|
||||
145,2021,SE,FT,Machine Learning Engineer,70000,EUR,82744,BE,50,BE,M
|
||||
146,2021,MI,FT,Research Scientist,53000,EUR,62649,FR,50,FR,M
|
||||
147,2021,MI,FT,Data Engineer,90000,USD,90000,US,100,US,L
|
||||
148,2021,SE,FT,Data Engineering Manager,153000,USD,153000,US,100,US,L
|
||||
149,2021,SE,FT,Cloud Data Engineer,160000,USD,160000,BR,100,US,S
|
||||
150,2021,SE,FT,Director of Data Science,168000,USD,168000,JP,0,JP,S
|
||||
151,2021,MI,FT,Data Scientist,150000,USD,150000,US,100,US,M
|
||||
152,2021,MI,FT,Data Scientist,95000,CAD,75774,CA,100,CA,L
|
||||
153,2021,EN,FT,Data Scientist,13400,USD,13400,UA,100,UA,L
|
||||
154,2021,SE,FT,Data Science Manager,144000,USD,144000,US,100,US,L
|
||||
155,2021,SE,FT,Data Science Engineer,159500,CAD,127221,CA,50,CA,L
|
||||
156,2021,MI,FT,Data Scientist,160000,SGD,119059,SG,100,IL,M
|
||||
157,2021,MI,FT,Applied Machine Learning Scientist,423000,USD,423000,US,50,US,L
|
||||
158,2021,SE,FT,Data Analytics Manager,120000,USD,120000,US,100,US,M
|
||||
159,2021,EN,FT,Machine Learning Engineer,125000,USD,125000,US,100,US,S
|
||||
160,2021,EX,FT,Head of Data,230000,USD,230000,RU,50,RU,L
|
||||
161,2021,EX,FT,Head of Data Science,85000,USD,85000,RU,0,RU,M
|
||||
162,2021,MI,FT,Data Engineer,24000,EUR,28369,MT,50,MT,L
|
||||
163,2021,EN,FT,Data Science Consultant,54000,EUR,63831,DE,50,DE,L
|
||||
164,2021,EX,FT,Director of Data Science,110000,EUR,130026,DE,50,DE,M
|
||||
165,2021,SE,FT,Data Specialist,165000,USD,165000,US,100,US,L
|
||||
166,2021,EN,FT,Data Engineer,80000,USD,80000,US,100,US,L
|
||||
167,2021,EX,FT,Director of Data Science,250000,USD,250000,US,0,US,L
|
||||
168,2021,EN,FT,BI Data Analyst,55000,USD,55000,US,50,US,S
|
||||
169,2021,MI,FT,Data Architect,150000,USD,150000,US,100,US,L
|
||||
170,2021,MI,FT,Data Architect,170000,USD,170000,US,100,US,L
|
||||
171,2021,MI,FT,Data Engineer,60000,GBP,82528,GB,100,GB,L
|
||||
172,2021,EN,FT,Data Analyst,60000,USD,60000,US,100,US,S
|
||||
173,2021,SE,FT,Principal Data Scientist,235000,USD,235000,US,100,US,L
|
||||
174,2021,SE,FT,Research Scientist,51400,EUR,60757,PT,50,PT,L
|
||||
175,2021,SE,FT,Data Engineering Manager,174000,USD,174000,US,100,US,L
|
||||
176,2021,MI,FT,Data Scientist,58000,MXN,2859,MX,0,MX,S
|
||||
177,2021,MI,FT,Data Scientist,30400000,CLP,40038,CL,100,CL,L
|
||||
178,2021,EN,FT,Machine Learning Engineer,81000,USD,81000,US,50,US,S
|
||||
179,2021,MI,FT,Data Scientist,420000,INR,5679,IN,100,US,S
|
||||
180,2021,MI,FT,Big Data Engineer,1672000,INR,22611,IN,0,IN,L
|
||||
181,2021,MI,FT,Data Scientist,76760,EUR,90734,DE,50,DE,L
|
||||
182,2021,MI,FT,Data Engineer,22000,EUR,26005,RO,0,US,L
|
||||
183,2021,SE,FT,Finance Data Analyst,45000,GBP,61896,GB,50,GB,L
|
||||
184,2021,MI,FL,Machine Learning Scientist,12000,USD,12000,PK,50,PK,M
|
||||
185,2021,MI,FT,Data Engineer,4000,USD,4000,IR,100,IR,M
|
||||
186,2021,SE,FT,Data Analytics Engineer,50000,USD,50000,VN,100,GB,M
|
||||
187,2021,EX,FT,Data Science Consultant,59000,EUR,69741,FR,100,ES,S
|
||||
188,2021,SE,FT,Data Engineer,65000,EUR,76833,RO,50,GB,S
|
||||
189,2021,MI,FT,Machine Learning Engineer,74000,USD,74000,JP,50,JP,S
|
||||
190,2021,SE,FT,Data Science Manager,152000,USD,152000,US,100,FR,L
|
||||
191,2021,EN,FT,Machine Learning Engineer,21844,USD,21844,CO,50,CO,M
|
||||
192,2021,MI,FT,Big Data Engineer,18000,USD,18000,MD,0,MD,S
|
||||
193,2021,SE,FT,Data Science Manager,174000,USD,174000,US,100,US,L
|
||||
194,2021,SE,FT,Research Scientist,120500,CAD,96113,CA,50,CA,L
|
||||
195,2021,MI,FT,Data Scientist,147000,USD,147000,US,50,US,L
|
||||
196,2021,EN,FT,BI Data Analyst,9272,USD,9272,KE,100,KE,S
|
||||
197,2021,SE,FT,Machine Learning Engineer,1799997,INR,24342,IN,100,IN,L
|
||||
198,2021,SE,FT,Data Science Manager,4000000,INR,54094,IN,50,US,L
|
||||
199,2021,EN,FT,Data Science Consultant,90000,USD,90000,US,100,US,S
|
||||
200,2021,MI,FT,Data Scientist,52000,EUR,61467,DE,50,AT,M
|
||||
201,2021,SE,FT,Machine Learning Infrastructure Engineer,195000,USD,195000,US,100,US,M
|
||||
202,2021,MI,FT,Data Scientist,32000,EUR,37825,ES,100,ES,L
|
||||
203,2021,SE,FT,Research Scientist,50000,USD,50000,FR,100,US,S
|
||||
204,2021,MI,FT,Data Scientist,160000,USD,160000,US,100,US,L
|
||||
205,2021,MI,FT,Data Scientist,69600,BRL,12901,BR,0,BR,S
|
||||
206,2021,SE,FT,Machine Learning Engineer,200000,USD,200000,US,100,US,L
|
||||
207,2021,SE,FT,Data Engineer,165000,USD,165000,US,0,US,M
|
||||
208,2021,MI,FL,Data Engineer,20000,USD,20000,IT,0,US,L
|
||||
209,2021,SE,FT,Data Analytics Manager,120000,USD,120000,US,0,US,L
|
||||
210,2021,MI,FT,Machine Learning Engineer,21000,EUR,24823,SI,50,SI,L
|
||||
211,2021,MI,FT,Research Scientist,48000,EUR,56738,FR,50,FR,S
|
||||
212,2021,MI,FT,Data Engineer,48000,GBP,66022,HK,50,GB,S
|
||||
213,2021,EN,FT,Big Data Engineer,435000,INR,5882,IN,0,CH,L
|
||||
214,2021,EN,FT,Machine Learning Engineer,21000,EUR,24823,DE,50,DE,M
|
||||
215,2021,SE,FT,Principal Data Engineer,185000,USD,185000,US,100,US,L
|
||||
216,2021,EN,PT,Computer Vision Engineer,180000,DKK,28609,DK,50,DK,S
|
||||
217,2021,MI,FT,Data Scientist,76760,EUR,90734,DE,50,DE,L
|
||||
218,2021,MI,FT,Machine Learning Engineer,75000,EUR,88654,BE,100,BE,M
|
||||
219,2021,SE,FT,Data Analytics Manager,140000,USD,140000,US,100,US,L
|
||||
220,2021,MI,FT,Machine Learning Engineer,180000,PLN,46597,PL,100,PL,L
|
||||
221,2021,MI,FT,Data Scientist,85000,GBP,116914,GB,50,GB,L
|
||||
222,2021,MI,FT,Data Scientist,2500000,INR,33808,IN,0,IN,M
|
||||
223,2021,MI,FT,Data Scientist,40900,GBP,56256,GB,50,GB,L
|
||||
224,2021,SE,FT,Machine Learning Scientist,225000,USD,225000,US,100,CA,L
|
||||
225,2021,EX,CT,Principal Data Scientist,416000,USD,416000,US,100,US,S
|
||||
226,2021,SE,FT,Data Scientist,110000,CAD,87738,CA,100,CA,S
|
||||
227,2021,MI,FT,Data Scientist,75000,EUR,88654,DE,50,DE,L
|
||||
228,2021,SE,FT,Data Scientist,135000,USD,135000,US,0,US,L
|
||||
229,2021,SE,FT,Data Analyst,90000,CAD,71786,CA,100,CA,M
|
||||
230,2021,EN,FT,Big Data Engineer,1200000,INR,16228,IN,100,IN,L
|
||||
231,2021,SE,FT,ML Engineer,256000,USD,256000,US,100,US,S
|
||||
232,2021,SE,FT,Director of Data Engineering,200000,USD,200000,US,100,US,L
|
||||
233,2021,SE,FT,Data Analyst,200000,USD,200000,US,100,US,L
|
||||
234,2021,MI,FT,Data Architect,180000,USD,180000,US,100,US,L
|
||||
235,2021,MI,FT,Head of Data Science,110000,USD,110000,US,0,US,S
|
||||
236,2021,MI,FT,Research Scientist,80000,CAD,63810,CA,100,CA,M
|
||||
237,2021,MI,FT,Data Scientist,39600,EUR,46809,ES,100,ES,M
|
||||
238,2021,EN,FT,Data Scientist,4000,USD,4000,VN,0,VN,M
|
||||
239,2021,EN,FT,Data Engineer,1600000,INR,21637,IN,50,IN,M
|
||||
240,2021,SE,FT,Data Scientist,130000,CAD,103691,CA,100,CA,L
|
||||
241,2021,MI,FT,Data Analyst,80000,USD,80000,US,100,US,L
|
||||
242,2021,MI,FT,Data Engineer,110000,USD,110000,US,100,US,L
|
||||
243,2021,SE,FT,Data Scientist,165000,USD,165000,US,100,US,L
|
||||
244,2021,EN,FT,AI Scientist,1335000,INR,18053,IN,100,AS,S
|
||||
245,2021,MI,FT,Data Engineer,52500,GBP,72212,GB,50,GB,L
|
||||
246,2021,EN,FT,Data Scientist,31000,EUR,36643,FR,50,FR,L
|
||||
247,2021,MI,FT,Data Engineer,108000,TRY,12103,TR,0,TR,M
|
||||
248,2021,SE,FT,Data Engineer,70000,GBP,96282,GB,50,GB,L
|
||||
249,2021,SE,FT,Principal Data Analyst,170000,USD,170000,US,100,US,M
|
||||
250,2021,MI,FT,Data Scientist,115000,USD,115000,US,50,US,L
|
||||
251,2021,EN,FT,Data Scientist,90000,USD,90000,US,100,US,S
|
||||
252,2021,EX,FT,Principal Data Engineer,600000,USD,600000,US,100,US,L
|
||||
253,2021,EN,FT,Data Scientist,2100000,INR,28399,IN,100,IN,M
|
||||
254,2021,MI,FT,Data Analyst,93000,USD,93000,US,100,US,L
|
||||
255,2021,SE,FT,Big Data Architect,125000,CAD,99703,CA,50,CA,M
|
||||
256,2021,MI,FT,Data Engineer,200000,USD,200000,US,100,US,L
|
||||
257,2021,SE,FT,Principal Data Scientist,147000,EUR,173762,DE,100,DE,M
|
||||
258,2021,SE,FT,Machine Learning Engineer,185000,USD,185000,US,50,US,L
|
||||
259,2021,EX,FT,Director of Data Science,120000,EUR,141846,DE,0,DE,L
|
||||
260,2021,MI,FT,Data Scientist,130000,USD,130000,US,50,US,L
|
||||
261,2021,SE,FT,Data Analyst,54000,EUR,63831,DE,50,DE,L
|
||||
262,2021,MI,FT,Data Scientist,1250000,INR,16904,IN,100,IN,S
|
||||
263,2021,SE,FT,Machine Learning Engineer,4900000,INR,66265,IN,0,IN,L
|
||||
264,2021,MI,FT,Data Scientist,21600,EUR,25532,RS,100,DE,S
|
||||
265,2021,SE,FT,Lead Data Engineer,160000,USD,160000,PR,50,US,S
|
||||
266,2021,MI,FT,Data Engineer,93150,USD,93150,US,0,US,M
|
||||
267,2021,MI,FT,Data Engineer,111775,USD,111775,US,0,US,M
|
||||
268,2021,MI,FT,Data Engineer,250000,TRY,28016,TR,100,TR,M
|
||||
269,2021,EN,FT,Data Engineer,55000,EUR,65013,DE,50,DE,M
|
||||
270,2021,EN,FT,Data Engineer,72500,USD,72500,US,100,US,L
|
||||
271,2021,SE,FT,Computer Vision Engineer,102000,BRL,18907,BR,0,BR,M
|
||||
272,2021,EN,FT,Data Science Consultant,65000,EUR,76833,DE,0,DE,L
|
||||
273,2021,EN,FT,Machine Learning Engineer,85000,USD,85000,NL,100,DE,S
|
||||
274,2021,SE,FT,Data Scientist,65720,EUR,77684,FR,50,FR,M
|
||||
275,2021,EN,FT,Data Scientist,100000,USD,100000,US,100,US,M
|
||||
276,2021,EN,FT,Data Scientist,58000,USD,58000,US,50,US,L
|
||||
277,2021,SE,FT,AI Scientist,55000,USD,55000,ES,100,ES,L
|
||||
278,2021,SE,FT,Data Scientist,180000,TRY,20171,TR,50,TR,L
|
||||
279,2021,EN,FT,Business Data Analyst,50000,EUR,59102,LU,100,LU,L
|
||||
280,2021,MI,FT,Data Engineer,112000,USD,112000,US,100,US,L
|
||||
281,2021,EN,FT,Research Scientist,100000,USD,100000,JE,0,CN,L
|
||||
282,2021,MI,PT,Data Engineer,59000,EUR,69741,NL,100,NL,L
|
||||
283,2021,SE,CT,Staff Data Scientist,105000,USD,105000,US,100,US,M
|
||||
284,2021,MI,FT,Research Scientist,69999,USD,69999,CZ,50,CZ,L
|
||||
285,2021,SE,FT,Data Science Manager,7000000,INR,94665,IN,50,IN,L
|
||||
286,2021,SE,FT,Head of Data,87000,EUR,102839,SI,100,SI,L
|
||||
287,2021,MI,FT,Data Scientist,109000,USD,109000,US,50,US,L
|
||||
288,2021,MI,FT,Machine Learning Engineer,43200,EUR,51064,IT,50,IT,L
|
||||
289,2022,SE,FT,Data Engineer,135000,USD,135000,US,100,US,M
|
||||
290,2022,SE,FT,Data Analyst,155000,USD,155000,US,100,US,M
|
||||
291,2022,SE,FT,Data Analyst,120600,USD,120600,US,100,US,M
|
||||
292,2022,MI,FT,Data Scientist,130000,USD,130000,US,0,US,M
|
||||
293,2022,MI,FT,Data Scientist,90000,USD,90000,US,0,US,M
|
||||
294,2022,MI,FT,Data Engineer,170000,USD,170000,US,100,US,M
|
||||
295,2022,MI,FT,Data Engineer,150000,USD,150000,US,100,US,M
|
||||
296,2022,SE,FT,Data Analyst,102100,USD,102100,US,100,US,M
|
||||
297,2022,SE,FT,Data Analyst,84900,USD,84900,US,100,US,M
|
||||
298,2022,SE,FT,Data Scientist,136620,USD,136620,US,100,US,M
|
||||
299,2022,SE,FT,Data Scientist,99360,USD,99360,US,100,US,M
|
||||
300,2022,SE,FT,Data Scientist,90000,GBP,117789,GB,0,GB,M
|
||||
301,2022,SE,FT,Data Scientist,80000,GBP,104702,GB,0,GB,M
|
||||
302,2022,SE,FT,Data Scientist,146000,USD,146000,US,100,US,M
|
||||
303,2022,SE,FT,Data Scientist,123000,USD,123000,US,100,US,M
|
||||
304,2022,EN,FT,Data Engineer,40000,GBP,52351,GB,100,GB,M
|
||||
305,2022,SE,FT,Data Analyst,99000,USD,99000,US,0,US,M
|
||||
306,2022,SE,FT,Data Analyst,116000,USD,116000,US,0,US,M
|
||||
307,2022,MI,FT,Data Analyst,106260,USD,106260,US,0,US,M
|
||||
308,2022,MI,FT,Data Analyst,126500,USD,126500,US,0,US,M
|
||||
309,2022,EX,FT,Data Engineer,242000,USD,242000,US,100,US,M
|
||||
310,2022,EX,FT,Data Engineer,200000,USD,200000,US,100,US,M
|
||||
311,2022,MI,FT,Data Scientist,50000,GBP,65438,GB,0,GB,M
|
||||
312,2022,MI,FT,Data Scientist,30000,GBP,39263,GB,0,GB,M
|
||||
313,2022,MI,FT,Data Engineer,60000,GBP,78526,GB,0,GB,M
|
||||
314,2022,MI,FT,Data Engineer,40000,GBP,52351,GB,0,GB,M
|
||||
315,2022,SE,FT,Data Scientist,165220,USD,165220,US,100,US,M
|
||||
316,2022,EN,FT,Data Engineer,35000,GBP,45807,GB,100,GB,M
|
||||
317,2022,SE,FT,Data Scientist,120160,USD,120160,US,100,US,M
|
||||
318,2022,SE,FT,Data Analyst,90320,USD,90320,US,100,US,M
|
||||
319,2022,SE,FT,Data Engineer,181940,USD,181940,US,0,US,M
|
||||
320,2022,SE,FT,Data Engineer,132320,USD,132320,US,0,US,M
|
||||
321,2022,SE,FT,Data Engineer,220110,USD,220110,US,0,US,M
|
||||
322,2022,SE,FT,Data Engineer,160080,USD,160080,US,0,US,M
|
||||
323,2022,SE,FT,Data Scientist,180000,USD,180000,US,0,US,L
|
||||
324,2022,SE,FT,Data Scientist,120000,USD,120000,US,0,US,L
|
||||
325,2022,SE,FT,Data Analyst,124190,USD,124190,US,100,US,M
|
||||
326,2022,EX,FT,Data Analyst,130000,USD,130000,US,100,US,M
|
||||
327,2022,EX,FT,Data Analyst,110000,USD,110000,US,100,US,M
|
||||
328,2022,SE,FT,Data Analyst,170000,USD,170000,US,100,US,M
|
||||
329,2022,MI,FT,Data Analyst,115500,USD,115500,US,100,US,M
|
||||
330,2022,SE,FT,Data Analyst,112900,USD,112900,US,100,US,M
|
||||
331,2022,SE,FT,Data Analyst,90320,USD,90320,US,100,US,M
|
||||
332,2022,SE,FT,Data Analyst,112900,USD,112900,US,100,US,M
|
||||
333,2022,SE,FT,Data Analyst,90320,USD,90320,US,100,US,M
|
||||
334,2022,SE,FT,Data Engineer,165400,USD,165400,US,100,US,M
|
||||
335,2022,SE,FT,Data Engineer,132320,USD,132320,US,100,US,M
|
||||
336,2022,MI,FT,Data Analyst,167000,USD,167000,US,100,US,M
|
||||
337,2022,SE,FT,Data Engineer,243900,USD,243900,US,100,US,M
|
||||
338,2022,SE,FT,Data Analyst,136600,USD,136600,US,100,US,M
|
||||
339,2022,SE,FT,Data Analyst,109280,USD,109280,US,100,US,M
|
||||
340,2022,SE,FT,Data Engineer,128875,USD,128875,US,100,US,M
|
||||
341,2022,SE,FT,Data Engineer,93700,USD,93700,US,100,US,M
|
||||
342,2022,EX,FT,Head of Data Science,224000,USD,224000,US,100,US,M
|
||||
343,2022,EX,FT,Head of Data Science,167875,USD,167875,US,100,US,M
|
||||
344,2022,EX,FT,Analytics Engineer,175000,USD,175000,US,100,US,M
|
||||
345,2022,SE,FT,Data Engineer,156600,USD,156600,US,100,US,M
|
||||
346,2022,SE,FT,Data Engineer,108800,USD,108800,US,0,US,M
|
||||
347,2022,SE,FT,Data Scientist,95550,USD,95550,US,0,US,M
|
||||
348,2022,SE,FT,Data Engineer,113000,USD,113000,US,0,US,L
|
||||
349,2022,SE,FT,Data Analyst,135000,USD,135000,US,100,US,M
|
||||
350,2022,SE,FT,Data Science Manager,161342,USD,161342,US,100,US,M
|
||||
351,2022,SE,FT,Data Science Manager,137141,USD,137141,US,100,US,M
|
||||
352,2022,SE,FT,Data Scientist,167000,USD,167000,US,100,US,M
|
||||
353,2022,SE,FT,Data Scientist,123000,USD,123000,US,100,US,M
|
||||
354,2022,SE,FT,Data Engineer,60000,GBP,78526,GB,0,GB,M
|
||||
355,2022,SE,FT,Data Engineer,50000,GBP,65438,GB,0,GB,M
|
||||
356,2022,SE,FT,Data Scientist,150000,USD,150000,US,0,US,M
|
||||
357,2022,SE,FT,Data Scientist,211500,USD,211500,US,100,US,M
|
||||
358,2022,SE,FT,Data Architect,192400,USD,192400,CA,100,CA,M
|
||||
359,2022,SE,FT,Data Architect,90700,USD,90700,CA,100,CA,M
|
||||
360,2022,SE,FT,Data Analyst,130000,USD,130000,CA,100,CA,M
|
||||
361,2022,SE,FT,Data Analyst,61300,USD,61300,CA,100,CA,M
|
||||
362,2022,SE,FT,Data Analyst,130000,USD,130000,CA,100,CA,M
|
||||
363,2022,SE,FT,Data Analyst,61300,USD,61300,CA,100,CA,M
|
||||
364,2022,SE,FT,Data Engineer,160000,USD,160000,US,0,US,L
|
||||
365,2022,SE,FT,Data Scientist,138600,USD,138600,US,100,US,M
|
||||
366,2022,SE,FT,Data Engineer,136000,USD,136000,US,0,US,M
|
||||
367,2022,MI,FT,Data Analyst,58000,USD,58000,US,0,US,S
|
||||
368,2022,EX,FT,Analytics Engineer,135000,USD,135000,US,100,US,M
|
||||
369,2022,SE,FT,Data Scientist,170000,USD,170000,US,100,US,M
|
||||
370,2022,SE,FT,Data Scientist,123000,USD,123000,US,100,US,M
|
||||
371,2022,SE,FT,Machine Learning Engineer,189650,USD,189650,US,0,US,M
|
||||
372,2022,SE,FT,Machine Learning Engineer,164996,USD,164996,US,0,US,M
|
||||
373,2022,MI,FT,ETL Developer,50000,EUR,54957,GR,0,GR,M
|
||||
374,2022,MI,FT,ETL Developer,50000,EUR,54957,GR,0,GR,M
|
||||
375,2022,EX,FT,Lead Data Engineer,150000,CAD,118187,CA,100,CA,S
|
||||
376,2022,SE,FT,Data Analyst,132000,USD,132000,US,0,US,M
|
||||
377,2022,SE,FT,Data Engineer,165400,USD,165400,US,100,US,M
|
||||
378,2022,SE,FT,Data Architect,208775,USD,208775,US,100,US,M
|
||||
379,2022,SE,FT,Data Architect,147800,USD,147800,US,100,US,M
|
||||
380,2022,SE,FT,Data Engineer,136994,USD,136994,US,100,US,M
|
||||
381,2022,SE,FT,Data Engineer,101570,USD,101570,US,100,US,M
|
||||
382,2022,SE,FT,Data Analyst,128875,USD,128875,US,100,US,M
|
||||
383,2022,SE,FT,Data Analyst,93700,USD,93700,US,100,US,M
|
||||
384,2022,EX,FT,Head of Machine Learning,6000000,INR,79039,IN,50,IN,L
|
||||
385,2022,SE,FT,Data Engineer,132320,USD,132320,US,100,US,M
|
||||
386,2022,EN,FT,Machine Learning Engineer,28500,GBP,37300,GB,100,GB,L
|
||||
387,2022,SE,FT,Data Analyst,164000,USD,164000,US,0,US,M
|
||||
388,2022,SE,FT,Data Engineer,155000,USD,155000,US,100,US,M
|
||||
389,2022,MI,FT,Machine Learning Engineer,95000,GBP,124333,GB,0,GB,M
|
||||
390,2022,MI,FT,Machine Learning Engineer,75000,GBP,98158,GB,0,GB,M
|
||||
391,2022,MI,FT,AI Scientist,120000,USD,120000,US,0,US,M
|
||||
392,2022,SE,FT,Data Analyst,112900,USD,112900,US,100,US,M
|
||||
393,2022,SE,FT,Data Analyst,90320,USD,90320,US,100,US,M
|
||||
394,2022,SE,FT,Data Analytics Manager,145000,USD,145000,US,100,US,M
|
||||
395,2022,SE,FT,Data Analytics Manager,105400,USD,105400,US,100,US,M
|
||||
396,2022,MI,FT,Machine Learning Engineer,80000,EUR,87932,FR,100,DE,M
|
||||
397,2022,MI,FT,Data Engineer,90000,GBP,117789,GB,0,GB,M
|
||||
398,2022,SE,FT,Data Scientist,215300,USD,215300,US,100,US,L
|
||||
399,2022,SE,FT,Data Scientist,158200,USD,158200,US,100,US,L
|
||||
400,2022,SE,FT,Data Engineer,209100,USD,209100,US,100,US,L
|
||||
401,2022,SE,FT,Data Engineer,154600,USD,154600,US,100,US,L
|
||||
402,2022,SE,FT,Data Analyst,115934,USD,115934,US,0,US,M
|
||||
403,2022,SE,FT,Data Analyst,81666,USD,81666,US,0,US,M
|
||||
404,2022,SE,FT,Data Engineer,175000,USD,175000,US,100,US,M
|
||||
405,2022,MI,FT,Data Engineer,75000,GBP,98158,GB,0,GB,M
|
||||
406,2022,MI,FT,Data Analyst,58000,USD,58000,US,0,US,S
|
||||
407,2022,SE,FT,Data Engineer,183600,USD,183600,US,100,US,L
|
||||
408,2022,MI,FT,Data Analyst,40000,GBP,52351,GB,100,GB,M
|
||||
409,2022,SE,FT,Data Scientist,180000,USD,180000,US,100,US,M
|
||||
410,2022,MI,FT,Data Scientist,55000,GBP,71982,GB,0,GB,M
|
||||
411,2022,MI,FT,Data Scientist,35000,GBP,45807,GB,0,GB,M
|
||||
412,2022,MI,FT,Data Engineer,60000,EUR,65949,GR,100,GR,M
|
||||
413,2022,MI,FT,Data Engineer,45000,EUR,49461,GR,100,GR,M
|
||||
414,2022,MI,FT,Data Engineer,60000,GBP,78526,GB,100,GB,M
|
||||
415,2022,MI,FT,Data Engineer,45000,GBP,58894,GB,100,GB,M
|
||||
416,2022,SE,FT,Data Scientist,260000,USD,260000,US,100,US,M
|
||||
417,2022,SE,FT,Data Science Engineer,60000,USD,60000,AR,100,MX,L
|
||||
418,2022,MI,FT,Data Engineer,63900,USD,63900,US,0,US,M
|
||||
419,2022,MI,FT,Machine Learning Scientist,160000,USD,160000,US,100,US,L
|
||||
420,2022,MI,FT,Machine Learning Scientist,112300,USD,112300,US,100,US,L
|
||||
421,2022,MI,FT,Data Science Manager,241000,USD,241000,US,100,US,M
|
||||
422,2022,MI,FT,Data Science Manager,159000,USD,159000,US,100,US,M
|
||||
423,2022,SE,FT,Data Scientist,180000,USD,180000,US,0,US,M
|
||||
424,2022,SE,FT,Data Scientist,80000,USD,80000,US,0,US,M
|
||||
425,2022,MI,FT,Data Engineer,82900,USD,82900,US,0,US,M
|
||||
426,2022,SE,FT,Data Engineer,100800,USD,100800,US,100,US,L
|
||||
427,2022,MI,FT,Data Engineer,45000,EUR,49461,ES,100,ES,M
|
||||
428,2022,SE,FT,Data Scientist,140400,USD,140400,US,0,US,L
|
||||
429,2022,MI,FT,Data Analyst,30000,GBP,39263,GB,100,GB,M
|
||||
430,2022,MI,FT,Data Analyst,40000,EUR,43966,ES,100,ES,M
|
||||
431,2022,MI,FT,Data Analyst,30000,EUR,32974,ES,100,ES,M
|
||||
432,2022,MI,FT,Data Engineer,80000,EUR,87932,ES,100,ES,M
|
||||
433,2022,MI,FT,Data Engineer,70000,EUR,76940,ES,100,ES,M
|
||||
434,2022,MI,FT,Data Engineer,80000,GBP,104702,GB,100,GB,M
|
||||
435,2022,MI,FT,Data Engineer,70000,GBP,91614,GB,100,GB,M
|
||||
436,2022,MI,FT,Data Engineer,60000,EUR,65949,ES,100,ES,M
|
||||
437,2022,MI,FT,Data Engineer,80000,EUR,87932,GR,100,GR,M
|
||||
438,2022,SE,FT,Machine Learning Engineer,189650,USD,189650,US,0,US,M
|
||||
439,2022,SE,FT,Machine Learning Engineer,164996,USD,164996,US,0,US,M
|
||||
440,2022,MI,FT,Data Analyst,40000,EUR,43966,GR,100,GR,M
|
||||
441,2022,MI,FT,Data Analyst,30000,EUR,32974,GR,100,GR,M
|
||||
442,2022,MI,FT,Data Engineer,75000,GBP,98158,GB,100,GB,M
|
||||
443,2022,MI,FT,Data Engineer,60000,GBP,78526,GB,100,GB,M
|
||||
444,2022,SE,FT,Data Scientist,215300,USD,215300,US,0,US,L
|
||||
445,2022,MI,FT,Data Engineer,70000,EUR,76940,GR,100,GR,M
|
||||
446,2022,SE,FT,Data Engineer,209100,USD,209100,US,100,US,L
|
||||
447,2022,SE,FT,Data Engineer,154600,USD,154600,US,100,US,L
|
||||
448,2022,SE,FT,Data Engineer,180000,USD,180000,US,100,US,M
|
||||
449,2022,EN,FT,ML Engineer,20000,EUR,21983,PT,100,PT,L
|
||||
450,2022,SE,FT,Data Engineer,80000,USD,80000,US,100,US,M
|
||||
451,2022,MI,FT,Machine Learning Developer,100000,CAD,78791,CA,100,CA,M
|
||||
452,2022,EX,FT,Director of Data Science,250000,CAD,196979,CA,50,CA,L
|
||||
453,2022,MI,FT,Machine Learning Engineer,120000,USD,120000,US,100,US,S
|
||||
454,2022,EN,FT,Computer Vision Engineer,125000,USD,125000,US,0,US,M
|
||||
455,2022,MI,FT,NLP Engineer,240000,CNY,37236,US,50,US,L
|
||||
456,2022,SE,FT,Data Engineer,105000,USD,105000,US,100,US,M
|
||||
457,2022,SE,FT,Lead Machine Learning Engineer,80000,EUR,87932,DE,0,DE,M
|
||||
458,2022,MI,FT,Business Data Analyst,1400000,INR,18442,IN,100,IN,M
|
||||
459,2022,MI,FT,Data Scientist,2400000,INR,31615,IN,100,IN,L
|
||||
460,2022,MI,FT,Machine Learning Infrastructure Engineer,53000,EUR,58255,PT,50,PT,L
|
||||
461,2022,EN,FT,Financial Data Analyst,100000,USD,100000,US,50,US,L
|
||||
462,2022,MI,PT,Data Engineer,50000,EUR,54957,DE,50,DE,L
|
||||
463,2022,EN,FT,Data Scientist,1400000,INR,18442,IN,100,IN,M
|
||||
464,2022,SE,FT,Principal Data Scientist,148000,EUR,162674,DE,100,DE,M
|
||||
465,2022,EN,FT,Data Engineer,120000,USD,120000,US,100,US,M
|
||||
466,2022,SE,FT,Research Scientist,144000,USD,144000,US,50,US,L
|
||||
467,2022,SE,FT,Data Scientist,104890,USD,104890,US,100,US,M
|
||||
468,2022,SE,FT,Data Engineer,100000,USD,100000,US,100,US,M
|
||||
469,2022,SE,FT,Data Scientist,140000,USD,140000,US,100,US,M
|
||||
470,2022,MI,FT,Data Analyst,135000,USD,135000,US,100,US,M
|
||||
471,2022,MI,FT,Data Analyst,50000,USD,50000,US,100,US,M
|
||||
472,2022,SE,FT,Data Scientist,220000,USD,220000,US,100,US,M
|
||||
473,2022,SE,FT,Data Scientist,140000,USD,140000,US,100,US,M
|
||||
474,2022,MI,FT,Data Scientist,140000,GBP,183228,GB,0,GB,M
|
||||
475,2022,MI,FT,Data Scientist,70000,GBP,91614,GB,0,GB,M
|
||||
476,2022,SE,FT,Data Scientist,185100,USD,185100,US,100,US,M
|
||||
477,2022,SE,FT,Machine Learning Engineer,220000,USD,220000,US,100,US,M
|
||||
478,2022,MI,FT,Data Scientist,200000,USD,200000,US,100,US,M
|
||||
479,2022,MI,FT,Data Scientist,120000,USD,120000,US,100,US,M
|
||||
480,2022,SE,FT,Machine Learning Engineer,120000,USD,120000,AE,100,AE,S
|
||||
481,2022,SE,FT,Machine Learning Engineer,65000,USD,65000,AE,100,AE,S
|
||||
482,2022,EX,FT,Data Engineer,324000,USD,324000,US,100,US,M
|
||||
483,2022,EX,FT,Data Engineer,216000,USD,216000,US,100,US,M
|
||||
484,2022,SE,FT,Data Engineer,210000,USD,210000,US,100,US,M
|
||||
485,2022,SE,FT,Machine Learning Engineer,120000,USD,120000,US,100,US,M
|
||||
486,2022,SE,FT,Data Scientist,230000,USD,230000,US,100,US,M
|
||||
487,2022,EN,PT,Data Scientist,100000,USD,100000,DZ,50,DZ,M
|
||||
488,2022,MI,FL,Data Scientist,100000,USD,100000,CA,100,US,M
|
||||
489,2022,EN,CT,Applied Machine Learning Scientist,29000,EUR,31875,TN,100,CZ,M
|
||||
490,2022,SE,FT,Head of Data,200000,USD,200000,MY,100,US,M
|
||||
491,2022,MI,FT,Principal Data Analyst,75000,USD,75000,CA,100,CA,S
|
||||
492,2022,MI,FT,Data Scientist,150000,PLN,35590,PL,100,PL,L
|
||||
493,2022,SE,FT,Machine Learning Developer,100000,CAD,78791,CA,100,CA,M
|
||||
494,2022,SE,FT,Data Scientist,100000,USD,100000,BR,100,US,M
|
||||
495,2022,MI,FT,Machine Learning Scientist,153000,USD,153000,US,50,US,M
|
||||
496,2022,EN,FT,Data Engineer,52800,EUR,58035,PK,100,DE,M
|
||||
497,2022,SE,FT,Data Scientist,165000,USD,165000,US,100,US,M
|
||||
498,2022,SE,FT,Research Scientist,85000,EUR,93427,FR,50,FR,L
|
||||
499,2022,EN,FT,Data Scientist,66500,CAD,52396,CA,100,CA,L
|
||||
500,2022,SE,FT,Machine Learning Engineer,57000,EUR,62651,NL,100,NL,L
|
||||
501,2022,MI,FT,Head of Data,30000,EUR,32974,EE,100,EE,S
|
||||
502,2022,EN,FT,Data Scientist,40000,USD,40000,JP,100,MY,L
|
||||
503,2022,MI,FT,Machine Learning Engineer,121000,AUD,87425,AU,100,AU,L
|
||||
504,2022,SE,FT,Data Engineer,115000,USD,115000,US,100,US,M
|
||||
505,2022,EN,FT,Data Scientist,120000,AUD,86703,AU,50,AU,M
|
||||
506,2022,MI,FT,Applied Machine Learning Scientist,75000,USD,75000,BO,100,US,L
|
||||
507,2022,MI,FT,Research Scientist,59000,EUR,64849,AT,0,AT,L
|
||||
508,2022,EN,FT,Research Scientist,120000,USD,120000,US,100,US,L
|
||||
509,2022,MI,FT,Applied Data Scientist,157000,USD,157000,US,100,US,L
|
||||
510,2022,EN,FT,Computer Vision Software Engineer,150000,USD,150000,AU,100,AU,S
|
||||
511,2022,MI,FT,Business Data Analyst,90000,CAD,70912,CA,50,CA,L
|
||||
512,2022,EN,FT,Data Engineer,65000,USD,65000,US,100,US,S
|
||||
513,2022,SE,FT,Machine Learning Engineer,65000,EUR,71444,IE,100,IE,S
|
||||
514,2022,EN,FT,Data Analytics Engineer,20000,USD,20000,PK,0,PK,M
|
||||
515,2022,MI,FT,Data Scientist,48000,USD,48000,RU,100,US,S
|
||||
516,2022,SE,FT,Data Science Manager,152500,USD,152500,US,100,US,M
|
||||
517,2022,MI,FT,Data Engineer,62000,EUR,68147,FR,100,FR,M
|
||||
518,2022,MI,FT,Data Scientist,115000,CHF,122346,CH,0,CH,L
|
||||
519,2022,SE,FT,Applied Data Scientist,380000,USD,380000,US,100,US,L
|
||||
520,2022,MI,FT,Data Scientist,88000,CAD,69336,CA,100,CA,M
|
||||
521,2022,EN,FT,Computer Vision Engineer,10000,USD,10000,PT,100,LU,M
|
||||
522,2022,MI,FT,Data Analyst,20000,USD,20000,GR,100,GR,S
|
||||
523,2022,SE,FT,Data Analytics Lead,405000,USD,405000,US,100,US,L
|
||||
524,2022,MI,FT,Data Scientist,135000,USD,135000,US,100,US,L
|
||||
525,2022,SE,FT,Applied Data Scientist,177000,USD,177000,US,100,US,L
|
||||
526,2022,MI,FT,Data Scientist,78000,USD,78000,US,100,US,M
|
||||
527,2022,SE,FT,Data Analyst,135000,USD,135000,US,100,US,M
|
||||
528,2022,SE,FT,Data Analyst,100000,USD,100000,US,100,US,M
|
||||
529,2022,SE,FT,Data Analyst,90320,USD,90320,US,100,US,M
|
||||
530,2022,MI,FT,Data Analyst,85000,USD,85000,CA,0,CA,M
|
||||
531,2022,MI,FT,Data Analyst,75000,USD,75000,CA,0,CA,M
|
||||
532,2022,SE,FT,Machine Learning Engineer,214000,USD,214000,US,100,US,M
|
||||
533,2022,SE,FT,Machine Learning Engineer,192600,USD,192600,US,100,US,M
|
||||
534,2022,SE,FT,Data Architect,266400,USD,266400,US,100,US,M
|
||||
535,2022,SE,FT,Data Architect,213120,USD,213120,US,100,US,M
|
||||
536,2022,SE,FT,Data Analyst,112900,USD,112900,US,100,US,M
|
||||
537,2022,SE,FT,Data Engineer,155000,USD,155000,US,100,US,M
|
||||
538,2022,MI,FT,Data Scientist,141300,USD,141300,US,0,US,M
|
||||
539,2022,MI,FT,Data Scientist,102100,USD,102100,US,0,US,M
|
||||
540,2022,SE,FT,Data Analyst,115934,USD,115934,US,100,US,M
|
||||
541,2022,SE,FT,Data Analyst,81666,USD,81666,US,100,US,M
|
||||
542,2022,MI,FT,Data Engineer,206699,USD,206699,US,0,US,M
|
||||
543,2022,MI,FT,Data Engineer,99100,USD,99100,US,0,US,M
|
||||
544,2022,SE,FT,Data Engineer,130000,USD,130000,US,100,US,M
|
||||
545,2022,SE,FT,Data Engineer,115000,USD,115000,US,100,US,M
|
||||
546,2022,SE,FT,Data Engineer,110500,USD,110500,US,100,US,M
|
||||
547,2022,SE,FT,Data Engineer,130000,USD,130000,US,100,US,M
|
||||
548,2022,SE,FT,Data Analyst,99050,USD,99050,US,100,US,M
|
||||
549,2022,SE,FT,Data Engineer,160000,USD,160000,US,100,US,M
|
||||
550,2022,SE,FT,Data Scientist,205300,USD,205300,US,0,US,L
|
||||
551,2022,SE,FT,Data Scientist,140400,USD,140400,US,0,US,L
|
||||
552,2022,SE,FT,Data Scientist,176000,USD,176000,US,100,US,M
|
||||
553,2022,SE,FT,Data Scientist,144000,USD,144000,US,100,US,M
|
||||
554,2022,SE,FT,Data Engineer,200100,USD,200100,US,100,US,M
|
||||
555,2022,SE,FT,Data Engineer,160000,USD,160000,US,100,US,M
|
||||
556,2022,SE,FT,Data Engineer,145000,USD,145000,US,100,US,M
|
||||
557,2022,SE,FT,Data Engineer,70500,USD,70500,US,0,US,M
|
||||
558,2022,SE,FT,Data Scientist,205300,USD,205300,US,0,US,M
|
||||
559,2022,SE,FT,Data Scientist,140400,USD,140400,US,0,US,M
|
||||
560,2022,SE,FT,Analytics Engineer,205300,USD,205300,US,0,US,M
|
||||
561,2022,SE,FT,Analytics Engineer,184700,USD,184700,US,0,US,M
|
||||
562,2022,SE,FT,Data Engineer,175100,USD,175100,US,100,US,M
|
||||
563,2022,SE,FT,Data Engineer,140250,USD,140250,US,100,US,M
|
||||
564,2022,SE,FT,Data Analyst,116150,USD,116150,US,100,US,M
|
||||
565,2022,SE,FT,Data Engineer,54000,USD,54000,US,0,US,M
|
||||
566,2022,SE,FT,Data Analyst,170000,USD,170000,US,100,US,M
|
||||
567,2022,MI,FT,Data Analyst,50000,GBP,65438,GB,0,GB,M
|
||||
568,2022,SE,FT,Data Analyst,80000,USD,80000,US,100,US,M
|
||||
569,2022,SE,FT,Data Scientist,140000,USD,140000,US,100,US,M
|
||||
570,2022,SE,FT,Data Scientist,210000,USD,210000,US,100,US,M
|
||||
571,2022,SE,FT,Data Scientist,140000,USD,140000,US,100,US,M
|
||||
572,2022,SE,FT,Data Analyst,100000,USD,100000,US,100,US,M
|
||||
573,2022,SE,FT,Data Analyst,69000,USD,69000,US,100,US,M
|
||||
574,2022,SE,FT,Data Scientist,210000,USD,210000,US,100,US,M
|
||||
575,2022,SE,FT,Data Scientist,140000,USD,140000,US,100,US,M
|
||||
576,2022,SE,FT,Data Scientist,210000,USD,210000,US,100,US,M
|
||||
577,2022,SE,FT,Data Analyst,150075,USD,150075,US,100,US,M
|
||||
578,2022,SE,FT,Data Engineer,100000,USD,100000,US,100,US,M
|
||||
579,2022,SE,FT,Data Engineer,25000,USD,25000,US,100,US,M
|
||||
580,2022,SE,FT,Data Analyst,126500,USD,126500,US,100,US,M
|
||||
581,2022,SE,FT,Data Analyst,106260,USD,106260,US,100,US,M
|
||||
582,2022,SE,FT,Data Engineer,220110,USD,220110,US,100,US,M
|
||||
583,2022,SE,FT,Data Engineer,160080,USD,160080,US,100,US,M
|
||||
584,2022,SE,FT,Data Analyst,105000,USD,105000,US,100,US,M
|
||||
585,2022,SE,FT,Data Analyst,110925,USD,110925,US,100,US,M
|
||||
586,2022,MI,FT,Data Analyst,35000,GBP,45807,GB,0,GB,M
|
||||
587,2022,SE,FT,Data Scientist,140000,USD,140000,US,100,US,M
|
||||
588,2022,SE,FT,Data Analyst,99000,USD,99000,US,0,US,M
|
||||
589,2022,SE,FT,Data Analyst,60000,USD,60000,US,100,US,M
|
||||
590,2022,SE,FT,Data Architect,192564,USD,192564,US,100,US,M
|
||||
591,2022,SE,FT,Data Architect,144854,USD,144854,US,100,US,M
|
||||
592,2022,SE,FT,Data Scientist,230000,USD,230000,US,100,US,M
|
||||
593,2022,SE,FT,Data Scientist,150000,USD,150000,US,100,US,M
|
||||
594,2022,SE,FT,Data Analytics Manager,150260,USD,150260,US,100,US,M
|
||||
595,2022,SE,FT,Data Analytics Manager,109280,USD,109280,US,100,US,M
|
||||
596,2022,SE,FT,Data Scientist,210000,USD,210000,US,100,US,M
|
||||
597,2022,SE,FT,Data Analyst,170000,USD,170000,US,100,US,M
|
||||
598,2022,MI,FT,Data Scientist,160000,USD,160000,US,100,US,M
|
||||
599,2022,MI,FT,Data Scientist,130000,USD,130000,US,100,US,M
|
||||
600,2022,EN,FT,Data Analyst,67000,USD,67000,CA,0,CA,M
|
||||
601,2022,EN,FT,Data Analyst,52000,USD,52000,CA,0,CA,M
|
||||
602,2022,SE,FT,Data Engineer,154000,USD,154000,US,100,US,M
|
||||
603,2022,SE,FT,Data Engineer,126000,USD,126000,US,100,US,M
|
||||
604,2022,SE,FT,Data Analyst,129000,USD,129000,US,0,US,M
|
||||
605,2022,SE,FT,Data Analyst,150000,USD,150000,US,100,US,M
|
||||
606,2022,MI,FT,AI Scientist,200000,USD,200000,IN,100,US,L
|
|
Before Width: | Height: | Size: 26 KiB |
@ -1,41 +0,0 @@
|
||||
import pandas as pd
|
||||
from sklearn.preprocessing import LabelEncoder
|
||||
from sklearn.manifold import TSNE
|
||||
from sklearn.cluster import KMeans
|
||||
import matplotlib.pyplot as plt
|
||||
import seaborn as sns
|
||||
|
||||
# Загрузка данных
|
||||
data = pd.read_csv("ds_salaries.csv")
|
||||
|
||||
# Преобразование категориальных переменных в числовые
|
||||
le = LabelEncoder()
|
||||
data['company_location'] = le.fit_transform(data['company_location'])
|
||||
data['company_size'] = le.fit_transform(data['company_size'])
|
||||
|
||||
# Выбор нужных признаков
|
||||
features = ['company_location', 'company_size']
|
||||
|
||||
# Применение t-SNE для уменьшения размерности
|
||||
tsne = TSNE(n_components=2, random_state=42)
|
||||
data_tsne = tsne.fit_transform(data[features])
|
||||
|
||||
# Кластеризация данных
|
||||
kmeans = KMeans(n_clusters=3, random_state=42)
|
||||
labels = kmeans.fit_predict(data_tsne)
|
||||
|
||||
# Создание датафрейма с новыми координатами и метками кластеров
|
||||
data_tsne_df = pd.DataFrame(data=data_tsne, columns=['Dimension 1', 'Dimension 2'])
|
||||
data_tsne_df['Cluster'] = labels
|
||||
|
||||
# Добавление номера кластера в исходные данные
|
||||
data['Cluster'] = labels
|
||||
|
||||
# Визуализация
|
||||
plt.figure(figsize=(10, 6))
|
||||
sns.scatterplot(x='Dimension 1', y='Dimension 2', hue='Cluster', data=data_tsne_df, palette='viridis', s=50)
|
||||
plt.title('t-SNE Clustering of Companies')
|
||||
plt.show()
|
||||
|
||||
# Вывод номера кластера в исходных данных
|
||||
print(data[['company_location', 'company_size', 'Cluster']])
|
@ -1,80 +0,0 @@
|
||||
# Лабораторная 5
|
||||
## Вариант 9
|
||||
|
||||
## Задание
|
||||
Использовать Ласо-регрессию, самостоятельно сформулировав задачу. Оценить, насколько хорошо она подходит для решения сформулированной вами задачи.
|
||||
|
||||
Задача:
|
||||
|
||||
Можно использовать регрессию для прогнозирования заработной платы на основе опыта работы (experience_level), типа занятости (employment_type), местоположения компании (company_location) и размера компании (company_size).
|
||||
|
||||
## Описание Программы
|
||||
Программа представляет собой пример использования Lasso регрессии для прогнозирования заработной платы на основе различных признаков.
|
||||
|
||||
### Используемые библиотеки
|
||||
- `pandas`: Библиотека для обработки и анализа данных, используется для загрузки и предобработки данных.
|
||||
- `scikit-learn`:
|
||||
|
||||
train_test_split: Используется для разделения данных на обучающий и тестовый наборы.
|
||||
|
||||
StandardScaler: Применяется для нормализации числовых признаков.
|
||||
|
||||
OneHotEncoder: Используется для кодирования категориальных признаков.
|
||||
|
||||
Lasso: Линейная модель Lasso для обучения регрессии.
|
||||
|
||||
Pipeline: Позволяет объединять шаги предварительной обработки данных и обучения модели в пайплайн.
|
||||
|
||||
- `matplotlib`: Используется для визуализации коэффициентов модели в виде горизонтальной столбчатой диаграммы.
|
||||
- `numpy`: Использована для работы с числовыми данными.
|
||||
|
||||
### Шаги программы
|
||||
|
||||
**Загрузка данных:**
|
||||
|
||||
Используется библиотека pandas для загрузки данных из файла ds_salaries.csv.
|
||||
|
||||
**Предварительная обработка данных:**
|
||||
|
||||
Категориальные признаки ('experience_level', 'employment_type', 'company_location', 'company_size') обрабатываются с использованием OneHotEncoder, а числовые признаки ('work_year') нормализуются с помощью StandardScaler. Эти шаги объединены в ColumnTransformer и используются в качестве предварительного обработчика данных.
|
||||
|
||||
**Выбор признаков:**
|
||||
|
||||
Определены признаки, которые будут использоваться для обучения модели.
|
||||
|
||||
**Разделение данных:**
|
||||
|
||||
Данные разделены на обучающий и тестовый наборы в соотношении 80/20 с использованием train_test_split.
|
||||
|
||||
**Обучение модели:**
|
||||
|
||||
Используется линейная модель Лассо-регрессия, объединенная с предварительным обработчиком данных в рамках Pipeline.
|
||||
|
||||
**Оценка точности модели:**
|
||||
|
||||
Вычисляется коэффициент детерминации (R^2 Score) и среднеквадратичная ошибка (Mean Squared Error) для оценки точности модели.
|
||||
|
||||
**Вывод предсказанных и фактических значений:**
|
||||
|
||||
Создается DataFrame с фактическими и предсказанными значениями и выводится в консоль.
|
||||
|
||||
**Визуализация весов (коэффициентов) модели:**
|
||||
|
||||
Строится горизонтальная столбчатая диаграмма для визуализации весов (коэффициентов) модели.
|
||||
|
||||
### Запуск программы
|
||||
- Склонировать или скачать код `main.py`.
|
||||
- Запустите файл в среде, поддерживающей выполнение Python. `python main.py`
|
||||
|
||||
### Результаты
|
||||
![](img.png)
|
||||
|
||||
![](cli_res.png)
|
||||
|
||||
Точность модели составляет всего 39%, что является довольно низким показателем
|
||||
|
||||
MSE довольно высок, что указывает на то, что модель не слишком хорошо соответствует данным и допускает ошибки в предсказаниях
|
||||
|
||||
Фактические и предсказанные значения: видно, что модель часто недооценивает или переоценивает заработную плату. Например, для индексов 563 и 289 фактическая заработная плата выше, чем предсказанная.
|
||||
|
||||
Изменение alfa не особо улучшает общую картину, поэтому, можно сделать вывод, что следует выбрать другой алгоритм.
|
Before Width: | Height: | Size: 15 KiB |
@ -1,608 +0,0 @@
|
||||
,work_year,experience_level,employment_type,job_title,salary,salary_currency,salary_in_usd,employee_residence,remote_ratio,company_location,company_size
|
||||
0,2020,MI,FT,Data Scientist,70000,EUR,79833,DE,0,DE,L
|
||||
1,2020,SE,FT,Machine Learning Scientist,260000,USD,260000,JP,0,JP,S
|
||||
2,2020,SE,FT,Big Data Engineer,85000,GBP,109024,GB,50,GB,M
|
||||
3,2020,MI,FT,Product Data Analyst,20000,USD,20000,HN,0,HN,S
|
||||
4,2020,SE,FT,Machine Learning Engineer,150000,USD,150000,US,50,US,L
|
||||
5,2020,EN,FT,Data Analyst,72000,USD,72000,US,100,US,L
|
||||
6,2020,SE,FT,Lead Data Scientist,190000,USD,190000,US,100,US,S
|
||||
7,2020,MI,FT,Data Scientist,11000000,HUF,35735,HU,50,HU,L
|
||||
8,2020,MI,FT,Business Data Analyst,135000,USD,135000,US,100,US,L
|
||||
9,2020,SE,FT,Lead Data Engineer,125000,USD,125000,NZ,50,NZ,S
|
||||
10,2020,EN,FT,Data Scientist,45000,EUR,51321,FR,0,FR,S
|
||||
11,2020,MI,FT,Data Scientist,3000000,INR,40481,IN,0,IN,L
|
||||
12,2020,EN,FT,Data Scientist,35000,EUR,39916,FR,0,FR,M
|
||||
13,2020,MI,FT,Lead Data Analyst,87000,USD,87000,US,100,US,L
|
||||
14,2020,MI,FT,Data Analyst,85000,USD,85000,US,100,US,L
|
||||
15,2020,MI,FT,Data Analyst,8000,USD,8000,PK,50,PK,L
|
||||
16,2020,EN,FT,Data Engineer,4450000,JPY,41689,JP,100,JP,S
|
||||
17,2020,SE,FT,Big Data Engineer,100000,EUR,114047,PL,100,GB,S
|
||||
18,2020,EN,FT,Data Science Consultant,423000,INR,5707,IN,50,IN,M
|
||||
19,2020,MI,FT,Lead Data Engineer,56000,USD,56000,PT,100,US,M
|
||||
20,2020,MI,FT,Machine Learning Engineer,299000,CNY,43331,CN,0,CN,M
|
||||
21,2020,MI,FT,Product Data Analyst,450000,INR,6072,IN,100,IN,L
|
||||
22,2020,SE,FT,Data Engineer,42000,EUR,47899,GR,50,GR,L
|
||||
23,2020,MI,FT,BI Data Analyst,98000,USD,98000,US,0,US,M
|
||||
24,2020,MI,FT,Lead Data Scientist,115000,USD,115000,AE,0,AE,L
|
||||
25,2020,EX,FT,Director of Data Science,325000,USD,325000,US,100,US,L
|
||||
26,2020,EN,FT,Research Scientist,42000,USD,42000,NL,50,NL,L
|
||||
27,2020,SE,FT,Data Engineer,720000,MXN,33511,MX,0,MX,S
|
||||
28,2020,EN,CT,Business Data Analyst,100000,USD,100000,US,100,US,L
|
||||
29,2020,SE,FT,Machine Learning Manager,157000,CAD,117104,CA,50,CA,L
|
||||
30,2020,MI,FT,Data Engineering Manager,51999,EUR,59303,DE,100,DE,S
|
||||
31,2020,EN,FT,Big Data Engineer,70000,USD,70000,US,100,US,L
|
||||
32,2020,SE,FT,Data Scientist,60000,EUR,68428,GR,100,US,L
|
||||
33,2020,MI,FT,Research Scientist,450000,USD,450000,US,0,US,M
|
||||
34,2020,MI,FT,Data Analyst,41000,EUR,46759,FR,50,FR,L
|
||||
35,2020,MI,FT,Data Engineer,65000,EUR,74130,AT,50,AT,L
|
||||
36,2020,MI,FT,Data Science Consultant,103000,USD,103000,US,100,US,L
|
||||
37,2020,EN,FT,Machine Learning Engineer,250000,USD,250000,US,50,US,L
|
||||
38,2020,EN,FT,Data Analyst,10000,USD,10000,NG,100,NG,S
|
||||
39,2020,EN,FT,Machine Learning Engineer,138000,USD,138000,US,100,US,S
|
||||
40,2020,MI,FT,Data Scientist,45760,USD,45760,PH,100,US,S
|
||||
41,2020,EX,FT,Data Engineering Manager,70000,EUR,79833,ES,50,ES,L
|
||||
42,2020,MI,FT,Machine Learning Infrastructure Engineer,44000,EUR,50180,PT,0,PT,M
|
||||
43,2020,MI,FT,Data Engineer,106000,USD,106000,US,100,US,L
|
||||
44,2020,MI,FT,Data Engineer,88000,GBP,112872,GB,50,GB,L
|
||||
45,2020,EN,PT,ML Engineer,14000,EUR,15966,DE,100,DE,S
|
||||
46,2020,MI,FT,Data Scientist,60000,GBP,76958,GB,100,GB,S
|
||||
47,2020,SE,FT,Data Engineer,188000,USD,188000,US,100,US,L
|
||||
48,2020,MI,FT,Data Scientist,105000,USD,105000,US,100,US,L
|
||||
49,2020,MI,FT,Data Engineer,61500,EUR,70139,FR,50,FR,L
|
||||
50,2020,EN,FT,Data Analyst,450000,INR,6072,IN,0,IN,S
|
||||
51,2020,EN,FT,Data Analyst,91000,USD,91000,US,100,US,L
|
||||
52,2020,EN,FT,AI Scientist,300000,DKK,45896,DK,50,DK,S
|
||||
53,2020,EN,FT,Data Engineer,48000,EUR,54742,PK,100,DE,L
|
||||
54,2020,SE,FL,Computer Vision Engineer,60000,USD,60000,RU,100,US,S
|
||||
55,2020,SE,FT,Principal Data Scientist,130000,EUR,148261,DE,100,DE,M
|
||||
56,2020,MI,FT,Data Scientist,34000,EUR,38776,ES,100,ES,M
|
||||
57,2020,MI,FT,Data Scientist,118000,USD,118000,US,100,US,M
|
||||
58,2020,SE,FT,Data Scientist,120000,USD,120000,US,50,US,L
|
||||
59,2020,MI,FT,Data Scientist,138350,USD,138350,US,100,US,M
|
||||
60,2020,MI,FT,Data Engineer,110000,USD,110000,US,100,US,L
|
||||
61,2020,MI,FT,Data Engineer,130800,USD,130800,ES,100,US,M
|
||||
62,2020,EN,PT,Data Scientist,19000,EUR,21669,IT,50,IT,S
|
||||
63,2020,SE,FT,Data Scientist,412000,USD,412000,US,100,US,L
|
||||
64,2020,SE,FT,Machine Learning Engineer,40000,EUR,45618,HR,100,HR,S
|
||||
65,2020,EN,FT,Data Scientist,55000,EUR,62726,DE,50,DE,S
|
||||
66,2020,EN,FT,Data Scientist,43200,EUR,49268,DE,0,DE,S
|
||||
67,2020,SE,FT,Data Science Manager,190200,USD,190200,US,100,US,M
|
||||
68,2020,EN,FT,Data Scientist,105000,USD,105000,US,100,US,S
|
||||
69,2020,SE,FT,Data Scientist,80000,EUR,91237,AT,0,AT,S
|
||||
70,2020,MI,FT,Data Scientist,55000,EUR,62726,FR,50,LU,S
|
||||
71,2020,MI,FT,Data Scientist,37000,EUR,42197,FR,50,FR,S
|
||||
72,2021,EN,FT,Research Scientist,60000,GBP,82528,GB,50,GB,L
|
||||
73,2021,EX,FT,BI Data Analyst,150000,USD,150000,IN,100,US,L
|
||||
74,2021,EX,FT,Head of Data,235000,USD,235000,US,100,US,L
|
||||
75,2021,SE,FT,Data Scientist,45000,EUR,53192,FR,50,FR,L
|
||||
76,2021,MI,FT,BI Data Analyst,100000,USD,100000,US,100,US,M
|
||||
77,2021,MI,PT,3D Computer Vision Researcher,400000,INR,5409,IN,50,IN,M
|
||||
78,2021,MI,CT,ML Engineer,270000,USD,270000,US,100,US,L
|
||||
79,2021,EN,FT,Data Analyst,80000,USD,80000,US,100,US,M
|
||||
80,2021,SE,FT,Data Analytics Engineer,67000,EUR,79197,DE,100,DE,L
|
||||
81,2021,MI,FT,Data Engineer,140000,USD,140000,US,100,US,L
|
||||
82,2021,MI,FT,Applied Data Scientist,68000,CAD,54238,GB,50,CA,L
|
||||
83,2021,MI,FT,Machine Learning Engineer,40000,EUR,47282,ES,100,ES,S
|
||||
84,2021,EX,FT,Director of Data Science,130000,EUR,153667,IT,100,PL,L
|
||||
85,2021,MI,FT,Data Engineer,110000,PLN,28476,PL,100,PL,L
|
||||
86,2021,EN,FT,Data Analyst,50000,EUR,59102,FR,50,FR,M
|
||||
87,2021,MI,FT,Data Analytics Engineer,110000,USD,110000,US,100,US,L
|
||||
88,2021,SE,FT,Lead Data Analyst,170000,USD,170000,US,100,US,L
|
||||
89,2021,SE,FT,Data Analyst,80000,USD,80000,BG,100,US,S
|
||||
90,2021,SE,FT,Marketing Data Analyst,75000,EUR,88654,GR,100,DK,L
|
||||
91,2021,EN,FT,Data Science Consultant,65000,EUR,76833,DE,100,DE,S
|
||||
92,2021,MI,FT,Lead Data Analyst,1450000,INR,19609,IN,100,IN,L
|
||||
93,2021,SE,FT,Lead Data Engineer,276000,USD,276000,US,0,US,L
|
||||
94,2021,EN,FT,Data Scientist,2200000,INR,29751,IN,50,IN,L
|
||||
95,2021,MI,FT,Cloud Data Engineer,120000,SGD,89294,SG,50,SG,L
|
||||
96,2021,EN,PT,AI Scientist,12000,USD,12000,BR,100,US,S
|
||||
97,2021,MI,FT,Financial Data Analyst,450000,USD,450000,US,100,US,L
|
||||
98,2021,EN,FT,Computer Vision Software Engineer,70000,USD,70000,US,100,US,M
|
||||
99,2021,MI,FT,Computer Vision Software Engineer,81000,EUR,95746,DE,100,US,S
|
||||
100,2021,MI,FT,Data Analyst,75000,USD,75000,US,0,US,L
|
||||
101,2021,SE,FT,Data Engineer,150000,USD,150000,US,100,US,L
|
||||
102,2021,MI,FT,BI Data Analyst,11000000,HUF,36259,HU,50,US,L
|
||||
103,2021,MI,FT,Data Analyst,62000,USD,62000,US,0,US,L
|
||||
104,2021,MI,FT,Data Scientist,73000,USD,73000,US,0,US,L
|
||||
105,2021,MI,FT,Data Analyst,37456,GBP,51519,GB,50,GB,L
|
||||
106,2021,MI,FT,Research Scientist,235000,CAD,187442,CA,100,CA,L
|
||||
107,2021,SE,FT,Data Engineer,115000,USD,115000,US,100,US,S
|
||||
108,2021,SE,FT,Data Engineer,150000,USD,150000,US,100,US,M
|
||||
109,2021,EN,FT,Data Engineer,2250000,INR,30428,IN,100,IN,L
|
||||
110,2021,SE,FT,Machine Learning Engineer,80000,EUR,94564,DE,50,DE,L
|
||||
111,2021,SE,FT,Director of Data Engineering,82500,GBP,113476,GB,100,GB,M
|
||||
112,2021,SE,FT,Lead Data Engineer,75000,GBP,103160,GB,100,GB,S
|
||||
113,2021,EN,PT,AI Scientist,12000,USD,12000,PK,100,US,M
|
||||
114,2021,MI,FT,Data Engineer,38400,EUR,45391,NL,100,NL,L
|
||||
115,2021,EN,FT,Machine Learning Scientist,225000,USD,225000,US,100,US,L
|
||||
116,2021,MI,FT,Data Scientist,50000,USD,50000,NG,100,NG,L
|
||||
117,2021,MI,FT,Data Science Engineer,34000,EUR,40189,GR,100,GR,M
|
||||
118,2021,EN,FT,Data Analyst,90000,USD,90000,US,100,US,S
|
||||
119,2021,MI,FT,Data Engineer,200000,USD,200000,US,100,US,L
|
||||
120,2021,MI,FT,Big Data Engineer,60000,USD,60000,ES,50,RO,M
|
||||
121,2021,SE,FT,Principal Data Engineer,200000,USD,200000,US,100,US,M
|
||||
122,2021,EN,FT,Data Analyst,50000,USD,50000,US,100,US,M
|
||||
123,2021,EN,FT,Applied Data Scientist,80000,GBP,110037,GB,0,GB,L
|
||||
124,2021,EN,PT,Data Analyst,8760,EUR,10354,ES,50,ES,M
|
||||
125,2021,MI,FT,Principal Data Scientist,151000,USD,151000,US,100,US,L
|
||||
126,2021,SE,FT,Machine Learning Scientist,120000,USD,120000,US,50,US,S
|
||||
127,2021,MI,FT,Data Scientist,700000,INR,9466,IN,0,IN,S
|
||||
128,2021,EN,FT,Machine Learning Engineer,20000,USD,20000,IN,100,IN,S
|
||||
129,2021,SE,FT,Lead Data Scientist,3000000,INR,40570,IN,50,IN,L
|
||||
130,2021,EN,FT,Machine Learning Developer,100000,USD,100000,IQ,50,IQ,S
|
||||
131,2021,EN,FT,Data Scientist,42000,EUR,49646,FR,50,FR,M
|
||||
132,2021,MI,FT,Applied Machine Learning Scientist,38400,USD,38400,VN,100,US,M
|
||||
133,2021,SE,FT,Computer Vision Engineer,24000,USD,24000,BR,100,BR,M
|
||||
134,2021,EN,FT,Data Scientist,100000,USD,100000,US,0,US,S
|
||||
135,2021,MI,FT,Data Analyst,90000,USD,90000,US,100,US,M
|
||||
136,2021,MI,FT,ML Engineer,7000000,JPY,63711,JP,50,JP,S
|
||||
137,2021,MI,FT,ML Engineer,8500000,JPY,77364,JP,50,JP,S
|
||||
138,2021,SE,FT,Principal Data Scientist,220000,USD,220000,US,0,US,L
|
||||
139,2021,EN,FT,Data Scientist,80000,USD,80000,US,100,US,M
|
||||
140,2021,MI,FT,Data Analyst,135000,USD,135000,US,100,US,L
|
||||
141,2021,SE,FT,Data Science Manager,240000,USD,240000,US,0,US,L
|
||||
142,2021,SE,FT,Data Engineering Manager,150000,USD,150000,US,0,US,L
|
||||
143,2021,MI,FT,Data Scientist,82500,USD,82500,US,100,US,S
|
||||
144,2021,MI,FT,Data Engineer,100000,USD,100000,US,100,US,L
|
||||
145,2021,SE,FT,Machine Learning Engineer,70000,EUR,82744,BE,50,BE,M
|
||||
146,2021,MI,FT,Research Scientist,53000,EUR,62649,FR,50,FR,M
|
||||
147,2021,MI,FT,Data Engineer,90000,USD,90000,US,100,US,L
|
||||
148,2021,SE,FT,Data Engineering Manager,153000,USD,153000,US,100,US,L
|
||||
149,2021,SE,FT,Cloud Data Engineer,160000,USD,160000,BR,100,US,S
|
||||
150,2021,SE,FT,Director of Data Science,168000,USD,168000,JP,0,JP,S
|
||||
151,2021,MI,FT,Data Scientist,150000,USD,150000,US,100,US,M
|
||||
152,2021,MI,FT,Data Scientist,95000,CAD,75774,CA,100,CA,L
|
||||
153,2021,EN,FT,Data Scientist,13400,USD,13400,UA,100,UA,L
|
||||
154,2021,SE,FT,Data Science Manager,144000,USD,144000,US,100,US,L
|
||||
155,2021,SE,FT,Data Science Engineer,159500,CAD,127221,CA,50,CA,L
|
||||
156,2021,MI,FT,Data Scientist,160000,SGD,119059,SG,100,IL,M
|
||||
157,2021,MI,FT,Applied Machine Learning Scientist,423000,USD,423000,US,50,US,L
|
||||
158,2021,SE,FT,Data Analytics Manager,120000,USD,120000,US,100,US,M
|
||||
159,2021,EN,FT,Machine Learning Engineer,125000,USD,125000,US,100,US,S
|
||||
160,2021,EX,FT,Head of Data,230000,USD,230000,RU,50,RU,L
|
||||
161,2021,EX,FT,Head of Data Science,85000,USD,85000,RU,0,RU,M
|
||||
162,2021,MI,FT,Data Engineer,24000,EUR,28369,MT,50,MT,L
|
||||
163,2021,EN,FT,Data Science Consultant,54000,EUR,63831,DE,50,DE,L
|
||||
164,2021,EX,FT,Director of Data Science,110000,EUR,130026,DE,50,DE,M
|
||||
165,2021,SE,FT,Data Specialist,165000,USD,165000,US,100,US,L
|
||||
166,2021,EN,FT,Data Engineer,80000,USD,80000,US,100,US,L
|
||||
167,2021,EX,FT,Director of Data Science,250000,USD,250000,US,0,US,L
|
||||
168,2021,EN,FT,BI Data Analyst,55000,USD,55000,US,50,US,S
|
||||
169,2021,MI,FT,Data Architect,150000,USD,150000,US,100,US,L
|
||||
170,2021,MI,FT,Data Architect,170000,USD,170000,US,100,US,L
|
||||
171,2021,MI,FT,Data Engineer,60000,GBP,82528,GB,100,GB,L
|
||||
172,2021,EN,FT,Data Analyst,60000,USD,60000,US,100,US,S
|
||||
173,2021,SE,FT,Principal Data Scientist,235000,USD,235000,US,100,US,L
|
||||
174,2021,SE,FT,Research Scientist,51400,EUR,60757,PT,50,PT,L
|
||||
175,2021,SE,FT,Data Engineering Manager,174000,USD,174000,US,100,US,L
|
||||
176,2021,MI,FT,Data Scientist,58000,MXN,2859,MX,0,MX,S
|
||||
177,2021,MI,FT,Data Scientist,30400000,CLP,40038,CL,100,CL,L
|
||||
178,2021,EN,FT,Machine Learning Engineer,81000,USD,81000,US,50,US,S
|
||||
179,2021,MI,FT,Data Scientist,420000,INR,5679,IN,100,US,S
|
||||
180,2021,MI,FT,Big Data Engineer,1672000,INR,22611,IN,0,IN,L
|
||||
181,2021,MI,FT,Data Scientist,76760,EUR,90734,DE,50,DE,L
|
||||
182,2021,MI,FT,Data Engineer,22000,EUR,26005,RO,0,US,L
|
||||
183,2021,SE,FT,Finance Data Analyst,45000,GBP,61896,GB,50,GB,L
|
||||
184,2021,MI,FL,Machine Learning Scientist,12000,USD,12000,PK,50,PK,M
|
||||
185,2021,MI,FT,Data Engineer,4000,USD,4000,IR,100,IR,M
|
||||
186,2021,SE,FT,Data Analytics Engineer,50000,USD,50000,VN,100,GB,M
|
||||
187,2021,EX,FT,Data Science Consultant,59000,EUR,69741,FR,100,ES,S
|
||||
188,2021,SE,FT,Data Engineer,65000,EUR,76833,RO,50,GB,S
|
||||
189,2021,MI,FT,Machine Learning Engineer,74000,USD,74000,JP,50,JP,S
|
||||
190,2021,SE,FT,Data Science Manager,152000,USD,152000,US,100,FR,L
|
||||
191,2021,EN,FT,Machine Learning Engineer,21844,USD,21844,CO,50,CO,M
|
||||
192,2021,MI,FT,Big Data Engineer,18000,USD,18000,MD,0,MD,S
|
||||
193,2021,SE,FT,Data Science Manager,174000,USD,174000,US,100,US,L
|
||||
194,2021,SE,FT,Research Scientist,120500,CAD,96113,CA,50,CA,L
|
||||
195,2021,MI,FT,Data Scientist,147000,USD,147000,US,50,US,L
|
||||
196,2021,EN,FT,BI Data Analyst,9272,USD,9272,KE,100,KE,S
|
||||
197,2021,SE,FT,Machine Learning Engineer,1799997,INR,24342,IN,100,IN,L
|
||||
198,2021,SE,FT,Data Science Manager,4000000,INR,54094,IN,50,US,L
|
||||
199,2021,EN,FT,Data Science Consultant,90000,USD,90000,US,100,US,S
|
||||
200,2021,MI,FT,Data Scientist,52000,EUR,61467,DE,50,AT,M
|
||||
201,2021,SE,FT,Machine Learning Infrastructure Engineer,195000,USD,195000,US,100,US,M
|
||||
202,2021,MI,FT,Data Scientist,32000,EUR,37825,ES,100,ES,L
|
||||
203,2021,SE,FT,Research Scientist,50000,USD,50000,FR,100,US,S
|
||||
204,2021,MI,FT,Data Scientist,160000,USD,160000,US,100,US,L
|
||||
205,2021,MI,FT,Data Scientist,69600,BRL,12901,BR,0,BR,S
|
||||
206,2021,SE,FT,Machine Learning Engineer,200000,USD,200000,US,100,US,L
|
||||
207,2021,SE,FT,Data Engineer,165000,USD,165000,US,0,US,M
|
||||
208,2021,MI,FL,Data Engineer,20000,USD,20000,IT,0,US,L
|
||||
209,2021,SE,FT,Data Analytics Manager,120000,USD,120000,US,0,US,L
|
||||
210,2021,MI,FT,Machine Learning Engineer,21000,EUR,24823,SI,50,SI,L
|
||||
211,2021,MI,FT,Research Scientist,48000,EUR,56738,FR,50,FR,S
|
||||
212,2021,MI,FT,Data Engineer,48000,GBP,66022,HK,50,GB,S
|
||||
213,2021,EN,FT,Big Data Engineer,435000,INR,5882,IN,0,CH,L
|
||||
214,2021,EN,FT,Machine Learning Engineer,21000,EUR,24823,DE,50,DE,M
|
||||
215,2021,SE,FT,Principal Data Engineer,185000,USD,185000,US,100,US,L
|
||||
216,2021,EN,PT,Computer Vision Engineer,180000,DKK,28609,DK,50,DK,S
|
||||
217,2021,MI,FT,Data Scientist,76760,EUR,90734,DE,50,DE,L
|
||||
218,2021,MI,FT,Machine Learning Engineer,75000,EUR,88654,BE,100,BE,M
|
||||
219,2021,SE,FT,Data Analytics Manager,140000,USD,140000,US,100,US,L
|
||||
220,2021,MI,FT,Machine Learning Engineer,180000,PLN,46597,PL,100,PL,L
|
||||
221,2021,MI,FT,Data Scientist,85000,GBP,116914,GB,50,GB,L
|
||||
222,2021,MI,FT,Data Scientist,2500000,INR,33808,IN,0,IN,M
|
||||
223,2021,MI,FT,Data Scientist,40900,GBP,56256,GB,50,GB,L
|
||||
224,2021,SE,FT,Machine Learning Scientist,225000,USD,225000,US,100,CA,L
|
||||
225,2021,EX,CT,Principal Data Scientist,416000,USD,416000,US,100,US,S
|
||||
226,2021,SE,FT,Data Scientist,110000,CAD,87738,CA,100,CA,S
|
||||
227,2021,MI,FT,Data Scientist,75000,EUR,88654,DE,50,DE,L
|
||||
228,2021,SE,FT,Data Scientist,135000,USD,135000,US,0,US,L
|
||||
229,2021,SE,FT,Data Analyst,90000,CAD,71786,CA,100,CA,M
|
||||
230,2021,EN,FT,Big Data Engineer,1200000,INR,16228,IN,100,IN,L
|
||||
231,2021,SE,FT,ML Engineer,256000,USD,256000,US,100,US,S
|
||||
232,2021,SE,FT,Director of Data Engineering,200000,USD,200000,US,100,US,L
|
||||
233,2021,SE,FT,Data Analyst,200000,USD,200000,US,100,US,L
|
||||
234,2021,MI,FT,Data Architect,180000,USD,180000,US,100,US,L
|
||||
235,2021,MI,FT,Head of Data Science,110000,USD,110000,US,0,US,S
|
||||
236,2021,MI,FT,Research Scientist,80000,CAD,63810,CA,100,CA,M
|
||||
237,2021,MI,FT,Data Scientist,39600,EUR,46809,ES,100,ES,M
|
||||
238,2021,EN,FT,Data Scientist,4000,USD,4000,VN,0,VN,M
|
||||
239,2021,EN,FT,Data Engineer,1600000,INR,21637,IN,50,IN,M
|
||||
240,2021,SE,FT,Data Scientist,130000,CAD,103691,CA,100,CA,L
|
||||
241,2021,MI,FT,Data Analyst,80000,USD,80000,US,100,US,L
|
||||
242,2021,MI,FT,Data Engineer,110000,USD,110000,US,100,US,L
|
||||
243,2021,SE,FT,Data Scientist,165000,USD,165000,US,100,US,L
|
||||
244,2021,EN,FT,AI Scientist,1335000,INR,18053,IN,100,AS,S
|
||||
245,2021,MI,FT,Data Engineer,52500,GBP,72212,GB,50,GB,L
|
||||
246,2021,EN,FT,Data Scientist,31000,EUR,36643,FR,50,FR,L
|
||||
247,2021,MI,FT,Data Engineer,108000,TRY,12103,TR,0,TR,M
|
||||
248,2021,SE,FT,Data Engineer,70000,GBP,96282,GB,50,GB,L
|
||||
249,2021,SE,FT,Principal Data Analyst,170000,USD,170000,US,100,US,M
|
||||
250,2021,MI,FT,Data Scientist,115000,USD,115000,US,50,US,L
|
||||
251,2021,EN,FT,Data Scientist,90000,USD,90000,US,100,US,S
|
||||
252,2021,EX,FT,Principal Data Engineer,600000,USD,600000,US,100,US,L
|
||||
253,2021,EN,FT,Data Scientist,2100000,INR,28399,IN,100,IN,M
|
||||
254,2021,MI,FT,Data Analyst,93000,USD,93000,US,100,US,L
|
||||
255,2021,SE,FT,Big Data Architect,125000,CAD,99703,CA,50,CA,M
|
||||
256,2021,MI,FT,Data Engineer,200000,USD,200000,US,100,US,L
|
||||
257,2021,SE,FT,Principal Data Scientist,147000,EUR,173762,DE,100,DE,M
|
||||
258,2021,SE,FT,Machine Learning Engineer,185000,USD,185000,US,50,US,L
|
||||
259,2021,EX,FT,Director of Data Science,120000,EUR,141846,DE,0,DE,L
|
||||
260,2021,MI,FT,Data Scientist,130000,USD,130000,US,50,US,L
|
||||
261,2021,SE,FT,Data Analyst,54000,EUR,63831,DE,50,DE,L
|
||||
262,2021,MI,FT,Data Scientist,1250000,INR,16904,IN,100,IN,S
|
||||
263,2021,SE,FT,Machine Learning Engineer,4900000,INR,66265,IN,0,IN,L
|
||||
264,2021,MI,FT,Data Scientist,21600,EUR,25532,RS,100,DE,S
|
||||
265,2021,SE,FT,Lead Data Engineer,160000,USD,160000,PR,50,US,S
|
||||
266,2021,MI,FT,Data Engineer,93150,USD,93150,US,0,US,M
|
||||
267,2021,MI,FT,Data Engineer,111775,USD,111775,US,0,US,M
|
||||
268,2021,MI,FT,Data Engineer,250000,TRY,28016,TR,100,TR,M
|
||||
269,2021,EN,FT,Data Engineer,55000,EUR,65013,DE,50,DE,M
|
||||
270,2021,EN,FT,Data Engineer,72500,USD,72500,US,100,US,L
|
||||
271,2021,SE,FT,Computer Vision Engineer,102000,BRL,18907,BR,0,BR,M
|
||||
272,2021,EN,FT,Data Science Consultant,65000,EUR,76833,DE,0,DE,L
|
||||
273,2021,EN,FT,Machine Learning Engineer,85000,USD,85000,NL,100,DE,S
|
||||
274,2021,SE,FT,Data Scientist,65720,EUR,77684,FR,50,FR,M
|
||||
275,2021,EN,FT,Data Scientist,100000,USD,100000,US,100,US,M
|
||||
276,2021,EN,FT,Data Scientist,58000,USD,58000,US,50,US,L
|
||||
277,2021,SE,FT,AI Scientist,55000,USD,55000,ES,100,ES,L
|
||||
278,2021,SE,FT,Data Scientist,180000,TRY,20171,TR,50,TR,L
|
||||
279,2021,EN,FT,Business Data Analyst,50000,EUR,59102,LU,100,LU,L
|
||||
280,2021,MI,FT,Data Engineer,112000,USD,112000,US,100,US,L
|
||||
281,2021,EN,FT,Research Scientist,100000,USD,100000,JE,0,CN,L
|
||||
282,2021,MI,PT,Data Engineer,59000,EUR,69741,NL,100,NL,L
|
||||
283,2021,SE,CT,Staff Data Scientist,105000,USD,105000,US,100,US,M
|
||||
284,2021,MI,FT,Research Scientist,69999,USD,69999,CZ,50,CZ,L
|
||||
285,2021,SE,FT,Data Science Manager,7000000,INR,94665,IN,50,IN,L
|
||||
286,2021,SE,FT,Head of Data,87000,EUR,102839,SI,100,SI,L
|
||||
287,2021,MI,FT,Data Scientist,109000,USD,109000,US,50,US,L
|
||||
288,2021,MI,FT,Machine Learning Engineer,43200,EUR,51064,IT,50,IT,L
|
||||
289,2022,SE,FT,Data Engineer,135000,USD,135000,US,100,US,M
|
||||
290,2022,SE,FT,Data Analyst,155000,USD,155000,US,100,US,M
|
||||
291,2022,SE,FT,Data Analyst,120600,USD,120600,US,100,US,M
|
||||
292,2022,MI,FT,Data Scientist,130000,USD,130000,US,0,US,M
|
||||
293,2022,MI,FT,Data Scientist,90000,USD,90000,US,0,US,M
|
||||
294,2022,MI,FT,Data Engineer,170000,USD,170000,US,100,US,M
|
||||
295,2022,MI,FT,Data Engineer,150000,USD,150000,US,100,US,M
|
||||
296,2022,SE,FT,Data Analyst,102100,USD,102100,US,100,US,M
|
||||
297,2022,SE,FT,Data Analyst,84900,USD,84900,US,100,US,M
|
||||
298,2022,SE,FT,Data Scientist,136620,USD,136620,US,100,US,M
|
||||
299,2022,SE,FT,Data Scientist,99360,USD,99360,US,100,US,M
|
||||
300,2022,SE,FT,Data Scientist,90000,GBP,117789,GB,0,GB,M
|
||||
301,2022,SE,FT,Data Scientist,80000,GBP,104702,GB,0,GB,M
|
||||
302,2022,SE,FT,Data Scientist,146000,USD,146000,US,100,US,M
|
||||
303,2022,SE,FT,Data Scientist,123000,USD,123000,US,100,US,M
|
||||
304,2022,EN,FT,Data Engineer,40000,GBP,52351,GB,100,GB,M
|
||||
305,2022,SE,FT,Data Analyst,99000,USD,99000,US,0,US,M
|
||||
306,2022,SE,FT,Data Analyst,116000,USD,116000,US,0,US,M
|
||||
307,2022,MI,FT,Data Analyst,106260,USD,106260,US,0,US,M
|
||||
308,2022,MI,FT,Data Analyst,126500,USD,126500,US,0,US,M
|
||||
309,2022,EX,FT,Data Engineer,242000,USD,242000,US,100,US,M
|
||||
310,2022,EX,FT,Data Engineer,200000,USD,200000,US,100,US,M
|
||||
311,2022,MI,FT,Data Scientist,50000,GBP,65438,GB,0,GB,M
|
||||
312,2022,MI,FT,Data Scientist,30000,GBP,39263,GB,0,GB,M
|
||||
313,2022,MI,FT,Data Engineer,60000,GBP,78526,GB,0,GB,M
|
||||
314,2022,MI,FT,Data Engineer,40000,GBP,52351,GB,0,GB,M
|
||||
315,2022,SE,FT,Data Scientist,165220,USD,165220,US,100,US,M
|
||||
316,2022,EN,FT,Data Engineer,35000,GBP,45807,GB,100,GB,M
|
||||
317,2022,SE,FT,Data Scientist,120160,USD,120160,US,100,US,M
|
||||
318,2022,SE,FT,Data Analyst,90320,USD,90320,US,100,US,M
|
||||
319,2022,SE,FT,Data Engineer,181940,USD,181940,US,0,US,M
|
||||
320,2022,SE,FT,Data Engineer,132320,USD,132320,US,0,US,M
|
||||
321,2022,SE,FT,Data Engineer,220110,USD,220110,US,0,US,M
|
||||
322,2022,SE,FT,Data Engineer,160080,USD,160080,US,0,US,M
|
||||
323,2022,SE,FT,Data Scientist,180000,USD,180000,US,0,US,L
|
||||
324,2022,SE,FT,Data Scientist,120000,USD,120000,US,0,US,L
|
||||
325,2022,SE,FT,Data Analyst,124190,USD,124190,US,100,US,M
|
||||
326,2022,EX,FT,Data Analyst,130000,USD,130000,US,100,US,M
|
||||
327,2022,EX,FT,Data Analyst,110000,USD,110000,US,100,US,M
|
||||
328,2022,SE,FT,Data Analyst,170000,USD,170000,US,100,US,M
|
||||
329,2022,MI,FT,Data Analyst,115500,USD,115500,US,100,US,M
|
||||
330,2022,SE,FT,Data Analyst,112900,USD,112900,US,100,US,M
|
||||
331,2022,SE,FT,Data Analyst,90320,USD,90320,US,100,US,M
|
||||
332,2022,SE,FT,Data Analyst,112900,USD,112900,US,100,US,M
|
||||
333,2022,SE,FT,Data Analyst,90320,USD,90320,US,100,US,M
|
||||
334,2022,SE,FT,Data Engineer,165400,USD,165400,US,100,US,M
|
||||
335,2022,SE,FT,Data Engineer,132320,USD,132320,US,100,US,M
|
||||
336,2022,MI,FT,Data Analyst,167000,USD,167000,US,100,US,M
|
||||
337,2022,SE,FT,Data Engineer,243900,USD,243900,US,100,US,M
|
||||
338,2022,SE,FT,Data Analyst,136600,USD,136600,US,100,US,M
|
||||
339,2022,SE,FT,Data Analyst,109280,USD,109280,US,100,US,M
|
||||
340,2022,SE,FT,Data Engineer,128875,USD,128875,US,100,US,M
|
||||
341,2022,SE,FT,Data Engineer,93700,USD,93700,US,100,US,M
|
||||
342,2022,EX,FT,Head of Data Science,224000,USD,224000,US,100,US,M
|
||||
343,2022,EX,FT,Head of Data Science,167875,USD,167875,US,100,US,M
|
||||
344,2022,EX,FT,Analytics Engineer,175000,USD,175000,US,100,US,M
|
||||
345,2022,SE,FT,Data Engineer,156600,USD,156600,US,100,US,M
|
||||
346,2022,SE,FT,Data Engineer,108800,USD,108800,US,0,US,M
|
||||
347,2022,SE,FT,Data Scientist,95550,USD,95550,US,0,US,M
|
||||
348,2022,SE,FT,Data Engineer,113000,USD,113000,US,0,US,L
|
||||
349,2022,SE,FT,Data Analyst,135000,USD,135000,US,100,US,M
|
||||
350,2022,SE,FT,Data Science Manager,161342,USD,161342,US,100,US,M
|
||||
351,2022,SE,FT,Data Science Manager,137141,USD,137141,US,100,US,M
|
||||
352,2022,SE,FT,Data Scientist,167000,USD,167000,US,100,US,M
|
||||
353,2022,SE,FT,Data Scientist,123000,USD,123000,US,100,US,M
|
||||
354,2022,SE,FT,Data Engineer,60000,GBP,78526,GB,0,GB,M
|
||||
355,2022,SE,FT,Data Engineer,50000,GBP,65438,GB,0,GB,M
|
||||
356,2022,SE,FT,Data Scientist,150000,USD,150000,US,0,US,M
|
||||
357,2022,SE,FT,Data Scientist,211500,USD,211500,US,100,US,M
|
||||
358,2022,SE,FT,Data Architect,192400,USD,192400,CA,100,CA,M
|
||||
359,2022,SE,FT,Data Architect,90700,USD,90700,CA,100,CA,M
|
||||
360,2022,SE,FT,Data Analyst,130000,USD,130000,CA,100,CA,M
|
||||
361,2022,SE,FT,Data Analyst,61300,USD,61300,CA,100,CA,M
|
||||
362,2022,SE,FT,Data Analyst,130000,USD,130000,CA,100,CA,M
|
||||
363,2022,SE,FT,Data Analyst,61300,USD,61300,CA,100,CA,M
|
||||
364,2022,SE,FT,Data Engineer,160000,USD,160000,US,0,US,L
|
||||
365,2022,SE,FT,Data Scientist,138600,USD,138600,US,100,US,M
|
||||
366,2022,SE,FT,Data Engineer,136000,USD,136000,US,0,US,M
|
||||
367,2022,MI,FT,Data Analyst,58000,USD,58000,US,0,US,S
|
||||
368,2022,EX,FT,Analytics Engineer,135000,USD,135000,US,100,US,M
|
||||
369,2022,SE,FT,Data Scientist,170000,USD,170000,US,100,US,M
|
||||
370,2022,SE,FT,Data Scientist,123000,USD,123000,US,100,US,M
|
||||
371,2022,SE,FT,Machine Learning Engineer,189650,USD,189650,US,0,US,M
|
||||
372,2022,SE,FT,Machine Learning Engineer,164996,USD,164996,US,0,US,M
|
||||
373,2022,MI,FT,ETL Developer,50000,EUR,54957,GR,0,GR,M
|
||||
374,2022,MI,FT,ETL Developer,50000,EUR,54957,GR,0,GR,M
|
||||
375,2022,EX,FT,Lead Data Engineer,150000,CAD,118187,CA,100,CA,S
|
||||
376,2022,SE,FT,Data Analyst,132000,USD,132000,US,0,US,M
|
||||
377,2022,SE,FT,Data Engineer,165400,USD,165400,US,100,US,M
|
||||
378,2022,SE,FT,Data Architect,208775,USD,208775,US,100,US,M
|
||||
379,2022,SE,FT,Data Architect,147800,USD,147800,US,100,US,M
|
||||
380,2022,SE,FT,Data Engineer,136994,USD,136994,US,100,US,M
|
||||
381,2022,SE,FT,Data Engineer,101570,USD,101570,US,100,US,M
|
||||
382,2022,SE,FT,Data Analyst,128875,USD,128875,US,100,US,M
|
||||
383,2022,SE,FT,Data Analyst,93700,USD,93700,US,100,US,M
|
||||
384,2022,EX,FT,Head of Machine Learning,6000000,INR,79039,IN,50,IN,L
|
||||
385,2022,SE,FT,Data Engineer,132320,USD,132320,US,100,US,M
|
||||
386,2022,EN,FT,Machine Learning Engineer,28500,GBP,37300,GB,100,GB,L
|
||||
387,2022,SE,FT,Data Analyst,164000,USD,164000,US,0,US,M
|
||||
388,2022,SE,FT,Data Engineer,155000,USD,155000,US,100,US,M
|
||||
389,2022,MI,FT,Machine Learning Engineer,95000,GBP,124333,GB,0,GB,M
|
||||
390,2022,MI,FT,Machine Learning Engineer,75000,GBP,98158,GB,0,GB,M
|
||||
391,2022,MI,FT,AI Scientist,120000,USD,120000,US,0,US,M
|
||||
392,2022,SE,FT,Data Analyst,112900,USD,112900,US,100,US,M
|
||||
393,2022,SE,FT,Data Analyst,90320,USD,90320,US,100,US,M
|
||||
394,2022,SE,FT,Data Analytics Manager,145000,USD,145000,US,100,US,M
|
||||
395,2022,SE,FT,Data Analytics Manager,105400,USD,105400,US,100,US,M
|
||||
396,2022,MI,FT,Machine Learning Engineer,80000,EUR,87932,FR,100,DE,M
|
||||
397,2022,MI,FT,Data Engineer,90000,GBP,117789,GB,0,GB,M
|
||||
398,2022,SE,FT,Data Scientist,215300,USD,215300,US,100,US,L
|
||||
399,2022,SE,FT,Data Scientist,158200,USD,158200,US,100,US,L
|
||||
400,2022,SE,FT,Data Engineer,209100,USD,209100,US,100,US,L
|
||||
401,2022,SE,FT,Data Engineer,154600,USD,154600,US,100,US,L
|
||||
402,2022,SE,FT,Data Analyst,115934,USD,115934,US,0,US,M
|
||||
403,2022,SE,FT,Data Analyst,81666,USD,81666,US,0,US,M
|
||||
404,2022,SE,FT,Data Engineer,175000,USD,175000,US,100,US,M
|
||||
405,2022,MI,FT,Data Engineer,75000,GBP,98158,GB,0,GB,M
|
||||
406,2022,MI,FT,Data Analyst,58000,USD,58000,US,0,US,S
|
||||
407,2022,SE,FT,Data Engineer,183600,USD,183600,US,100,US,L
|
||||
408,2022,MI,FT,Data Analyst,40000,GBP,52351,GB,100,GB,M
|
||||
409,2022,SE,FT,Data Scientist,180000,USD,180000,US,100,US,M
|
||||
410,2022,MI,FT,Data Scientist,55000,GBP,71982,GB,0,GB,M
|
||||
411,2022,MI,FT,Data Scientist,35000,GBP,45807,GB,0,GB,M
|
||||
412,2022,MI,FT,Data Engineer,60000,EUR,65949,GR,100,GR,M
|
||||
413,2022,MI,FT,Data Engineer,45000,EUR,49461,GR,100,GR,M
|
||||
414,2022,MI,FT,Data Engineer,60000,GBP,78526,GB,100,GB,M
|
||||
415,2022,MI,FT,Data Engineer,45000,GBP,58894,GB,100,GB,M
|
||||
416,2022,SE,FT,Data Scientist,260000,USD,260000,US,100,US,M
|
||||
417,2022,SE,FT,Data Science Engineer,60000,USD,60000,AR,100,MX,L
|
||||
418,2022,MI,FT,Data Engineer,63900,USD,63900,US,0,US,M
|
||||
419,2022,MI,FT,Machine Learning Scientist,160000,USD,160000,US,100,US,L
|
||||
420,2022,MI,FT,Machine Learning Scientist,112300,USD,112300,US,100,US,L
|
||||
421,2022,MI,FT,Data Science Manager,241000,USD,241000,US,100,US,M
|
||||
422,2022,MI,FT,Data Science Manager,159000,USD,159000,US,100,US,M
|
||||
423,2022,SE,FT,Data Scientist,180000,USD,180000,US,0,US,M
|
||||
424,2022,SE,FT,Data Scientist,80000,USD,80000,US,0,US,M
|
||||
425,2022,MI,FT,Data Engineer,82900,USD,82900,US,0,US,M
|
||||
426,2022,SE,FT,Data Engineer,100800,USD,100800,US,100,US,L
|
||||
427,2022,MI,FT,Data Engineer,45000,EUR,49461,ES,100,ES,M
|
||||
428,2022,SE,FT,Data Scientist,140400,USD,140400,US,0,US,L
|
||||
429,2022,MI,FT,Data Analyst,30000,GBP,39263,GB,100,GB,M
|
||||
430,2022,MI,FT,Data Analyst,40000,EUR,43966,ES,100,ES,M
|
||||
431,2022,MI,FT,Data Analyst,30000,EUR,32974,ES,100,ES,M
|
||||
432,2022,MI,FT,Data Engineer,80000,EUR,87932,ES,100,ES,M
|
||||
433,2022,MI,FT,Data Engineer,70000,EUR,76940,ES,100,ES,M
|
||||
434,2022,MI,FT,Data Engineer,80000,GBP,104702,GB,100,GB,M
|
||||
435,2022,MI,FT,Data Engineer,70000,GBP,91614,GB,100,GB,M
|
||||
436,2022,MI,FT,Data Engineer,60000,EUR,65949,ES,100,ES,M
|
||||
437,2022,MI,FT,Data Engineer,80000,EUR,87932,GR,100,GR,M
|
||||
438,2022,SE,FT,Machine Learning Engineer,189650,USD,189650,US,0,US,M
|
||||
439,2022,SE,FT,Machine Learning Engineer,164996,USD,164996,US,0,US,M
|
||||
440,2022,MI,FT,Data Analyst,40000,EUR,43966,GR,100,GR,M
|
||||
441,2022,MI,FT,Data Analyst,30000,EUR,32974,GR,100,GR,M
|
||||
442,2022,MI,FT,Data Engineer,75000,GBP,98158,GB,100,GB,M
|
||||
443,2022,MI,FT,Data Engineer,60000,GBP,78526,GB,100,GB,M
|
||||
444,2022,SE,FT,Data Scientist,215300,USD,215300,US,0,US,L
|
||||
445,2022,MI,FT,Data Engineer,70000,EUR,76940,GR,100,GR,M
|
||||
446,2022,SE,FT,Data Engineer,209100,USD,209100,US,100,US,L
|
||||
447,2022,SE,FT,Data Engineer,154600,USD,154600,US,100,US,L
|
||||
448,2022,SE,FT,Data Engineer,180000,USD,180000,US,100,US,M
|
||||
449,2022,EN,FT,ML Engineer,20000,EUR,21983,PT,100,PT,L
|
||||
450,2022,SE,FT,Data Engineer,80000,USD,80000,US,100,US,M
|
||||
451,2022,MI,FT,Machine Learning Developer,100000,CAD,78791,CA,100,CA,M
|
||||
452,2022,EX,FT,Director of Data Science,250000,CAD,196979,CA,50,CA,L
|
||||
453,2022,MI,FT,Machine Learning Engineer,120000,USD,120000,US,100,US,S
|
||||
454,2022,EN,FT,Computer Vision Engineer,125000,USD,125000,US,0,US,M
|
||||
455,2022,MI,FT,NLP Engineer,240000,CNY,37236,US,50,US,L
|
||||
456,2022,SE,FT,Data Engineer,105000,USD,105000,US,100,US,M
|
||||
457,2022,SE,FT,Lead Machine Learning Engineer,80000,EUR,87932,DE,0,DE,M
|
||||
458,2022,MI,FT,Business Data Analyst,1400000,INR,18442,IN,100,IN,M
|
||||
459,2022,MI,FT,Data Scientist,2400000,INR,31615,IN,100,IN,L
|
||||
460,2022,MI,FT,Machine Learning Infrastructure Engineer,53000,EUR,58255,PT,50,PT,L
|
||||
461,2022,EN,FT,Financial Data Analyst,100000,USD,100000,US,50,US,L
|
||||
462,2022,MI,PT,Data Engineer,50000,EUR,54957,DE,50,DE,L
|
||||
463,2022,EN,FT,Data Scientist,1400000,INR,18442,IN,100,IN,M
|
||||
464,2022,SE,FT,Principal Data Scientist,148000,EUR,162674,DE,100,DE,M
|
||||
465,2022,EN,FT,Data Engineer,120000,USD,120000,US,100,US,M
|
||||
466,2022,SE,FT,Research Scientist,144000,USD,144000,US,50,US,L
|
||||
467,2022,SE,FT,Data Scientist,104890,USD,104890,US,100,US,M
|
||||
468,2022,SE,FT,Data Engineer,100000,USD,100000,US,100,US,M
|
||||
469,2022,SE,FT,Data Scientist,140000,USD,140000,US,100,US,M
|
||||
470,2022,MI,FT,Data Analyst,135000,USD,135000,US,100,US,M
|
||||
471,2022,MI,FT,Data Analyst,50000,USD,50000,US,100,US,M
|
||||
472,2022,SE,FT,Data Scientist,220000,USD,220000,US,100,US,M
|
||||
473,2022,SE,FT,Data Scientist,140000,USD,140000,US,100,US,M
|
||||
474,2022,MI,FT,Data Scientist,140000,GBP,183228,GB,0,GB,M
|
||||
475,2022,MI,FT,Data Scientist,70000,GBP,91614,GB,0,GB,M
|
||||
476,2022,SE,FT,Data Scientist,185100,USD,185100,US,100,US,M
|
||||
477,2022,SE,FT,Machine Learning Engineer,220000,USD,220000,US,100,US,M
|
||||
478,2022,MI,FT,Data Scientist,200000,USD,200000,US,100,US,M
|
||||
479,2022,MI,FT,Data Scientist,120000,USD,120000,US,100,US,M
|
||||
480,2022,SE,FT,Machine Learning Engineer,120000,USD,120000,AE,100,AE,S
|
||||
481,2022,SE,FT,Machine Learning Engineer,65000,USD,65000,AE,100,AE,S
|
||||
482,2022,EX,FT,Data Engineer,324000,USD,324000,US,100,US,M
|
||||
483,2022,EX,FT,Data Engineer,216000,USD,216000,US,100,US,M
|
||||
484,2022,SE,FT,Data Engineer,210000,USD,210000,US,100,US,M
|
||||
485,2022,SE,FT,Machine Learning Engineer,120000,USD,120000,US,100,US,M
|
||||
486,2022,SE,FT,Data Scientist,230000,USD,230000,US,100,US,M
|
||||
487,2022,EN,PT,Data Scientist,100000,USD,100000,DZ,50,DZ,M
|
||||
488,2022,MI,FL,Data Scientist,100000,USD,100000,CA,100,US,M
|
||||
489,2022,EN,CT,Applied Machine Learning Scientist,29000,EUR,31875,TN,100,CZ,M
|
||||
490,2022,SE,FT,Head of Data,200000,USD,200000,MY,100,US,M
|
||||
491,2022,MI,FT,Principal Data Analyst,75000,USD,75000,CA,100,CA,S
|
||||
492,2022,MI,FT,Data Scientist,150000,PLN,35590,PL,100,PL,L
|
||||
493,2022,SE,FT,Machine Learning Developer,100000,CAD,78791,CA,100,CA,M
|
||||
494,2022,SE,FT,Data Scientist,100000,USD,100000,BR,100,US,M
|
||||
495,2022,MI,FT,Machine Learning Scientist,153000,USD,153000,US,50,US,M
|
||||
496,2022,EN,FT,Data Engineer,52800,EUR,58035,PK,100,DE,M
|
||||
497,2022,SE,FT,Data Scientist,165000,USD,165000,US,100,US,M
|
||||
498,2022,SE,FT,Research Scientist,85000,EUR,93427,FR,50,FR,L
|
||||
499,2022,EN,FT,Data Scientist,66500,CAD,52396,CA,100,CA,L
|
||||
500,2022,SE,FT,Machine Learning Engineer,57000,EUR,62651,NL,100,NL,L
|
||||
501,2022,MI,FT,Head of Data,30000,EUR,32974,EE,100,EE,S
|
||||
502,2022,EN,FT,Data Scientist,40000,USD,40000,JP,100,MY,L
|
||||
503,2022,MI,FT,Machine Learning Engineer,121000,AUD,87425,AU,100,AU,L
|
||||
504,2022,SE,FT,Data Engineer,115000,USD,115000,US,100,US,M
|
||||
505,2022,EN,FT,Data Scientist,120000,AUD,86703,AU,50,AU,M
|
||||
506,2022,MI,FT,Applied Machine Learning Scientist,75000,USD,75000,BO,100,US,L
|
||||
507,2022,MI,FT,Research Scientist,59000,EUR,64849,AT,0,AT,L
|
||||
508,2022,EN,FT,Research Scientist,120000,USD,120000,US,100,US,L
|
||||
509,2022,MI,FT,Applied Data Scientist,157000,USD,157000,US,100,US,L
|
||||
510,2022,EN,FT,Computer Vision Software Engineer,150000,USD,150000,AU,100,AU,S
|
||||
511,2022,MI,FT,Business Data Analyst,90000,CAD,70912,CA,50,CA,L
|
||||
512,2022,EN,FT,Data Engineer,65000,USD,65000,US,100,US,S
|
||||
513,2022,SE,FT,Machine Learning Engineer,65000,EUR,71444,IE,100,IE,S
|
||||
514,2022,EN,FT,Data Analytics Engineer,20000,USD,20000,PK,0,PK,M
|
||||
515,2022,MI,FT,Data Scientist,48000,USD,48000,RU,100,US,S
|
||||
516,2022,SE,FT,Data Science Manager,152500,USD,152500,US,100,US,M
|
||||
517,2022,MI,FT,Data Engineer,62000,EUR,68147,FR,100,FR,M
|
||||
518,2022,MI,FT,Data Scientist,115000,CHF,122346,CH,0,CH,L
|
||||
519,2022,SE,FT,Applied Data Scientist,380000,USD,380000,US,100,US,L
|
||||
520,2022,MI,FT,Data Scientist,88000,CAD,69336,CA,100,CA,M
|
||||
521,2022,EN,FT,Computer Vision Engineer,10000,USD,10000,PT,100,LU,M
|
||||
522,2022,MI,FT,Data Analyst,20000,USD,20000,GR,100,GR,S
|
||||
523,2022,SE,FT,Data Analytics Lead,405000,USD,405000,US,100,US,L
|
||||
524,2022,MI,FT,Data Scientist,135000,USD,135000,US,100,US,L
|
||||
525,2022,SE,FT,Applied Data Scientist,177000,USD,177000,US,100,US,L
|
||||
526,2022,MI,FT,Data Scientist,78000,USD,78000,US,100,US,M
|
||||
527,2022,SE,FT,Data Analyst,135000,USD,135000,US,100,US,M
|
||||
528,2022,SE,FT,Data Analyst,100000,USD,100000,US,100,US,M
|
||||
529,2022,SE,FT,Data Analyst,90320,USD,90320,US,100,US,M
|
||||
530,2022,MI,FT,Data Analyst,85000,USD,85000,CA,0,CA,M
|
||||
531,2022,MI,FT,Data Analyst,75000,USD,75000,CA,0,CA,M
|
||||
532,2022,SE,FT,Machine Learning Engineer,214000,USD,214000,US,100,US,M
|
||||
533,2022,SE,FT,Machine Learning Engineer,192600,USD,192600,US,100,US,M
|
||||
534,2022,SE,FT,Data Architect,266400,USD,266400,US,100,US,M
|
||||
535,2022,SE,FT,Data Architect,213120,USD,213120,US,100,US,M
|
||||
536,2022,SE,FT,Data Analyst,112900,USD,112900,US,100,US,M
|
||||
537,2022,SE,FT,Data Engineer,155000,USD,155000,US,100,US,M
|
||||
538,2022,MI,FT,Data Scientist,141300,USD,141300,US,0,US,M
|
||||
539,2022,MI,FT,Data Scientist,102100,USD,102100,US,0,US,M
|
||||
540,2022,SE,FT,Data Analyst,115934,USD,115934,US,100,US,M
|
||||
541,2022,SE,FT,Data Analyst,81666,USD,81666,US,100,US,M
|
||||
542,2022,MI,FT,Data Engineer,206699,USD,206699,US,0,US,M
|
||||
543,2022,MI,FT,Data Engineer,99100,USD,99100,US,0,US,M
|
||||
544,2022,SE,FT,Data Engineer,130000,USD,130000,US,100,US,M
|
||||
545,2022,SE,FT,Data Engineer,115000,USD,115000,US,100,US,M
|
||||
546,2022,SE,FT,Data Engineer,110500,USD,110500,US,100,US,M
|
||||
547,2022,SE,FT,Data Engineer,130000,USD,130000,US,100,US,M
|
||||
548,2022,SE,FT,Data Analyst,99050,USD,99050,US,100,US,M
|
||||
549,2022,SE,FT,Data Engineer,160000,USD,160000,US,100,US,M
|
||||
550,2022,SE,FT,Data Scientist,205300,USD,205300,US,0,US,L
|
||||
551,2022,SE,FT,Data Scientist,140400,USD,140400,US,0,US,L
|
||||
552,2022,SE,FT,Data Scientist,176000,USD,176000,US,100,US,M
|
||||
553,2022,SE,FT,Data Scientist,144000,USD,144000,US,100,US,M
|
||||
554,2022,SE,FT,Data Engineer,200100,USD,200100,US,100,US,M
|
||||
555,2022,SE,FT,Data Engineer,160000,USD,160000,US,100,US,M
|
||||
556,2022,SE,FT,Data Engineer,145000,USD,145000,US,100,US,M
|
||||
557,2022,SE,FT,Data Engineer,70500,USD,70500,US,0,US,M
|
||||
558,2022,SE,FT,Data Scientist,205300,USD,205300,US,0,US,M
|
||||
559,2022,SE,FT,Data Scientist,140400,USD,140400,US,0,US,M
|
||||
560,2022,SE,FT,Analytics Engineer,205300,USD,205300,US,0,US,M
|
||||
561,2022,SE,FT,Analytics Engineer,184700,USD,184700,US,0,US,M
|
||||
562,2022,SE,FT,Data Engineer,175100,USD,175100,US,100,US,M
|
||||
563,2022,SE,FT,Data Engineer,140250,USD,140250,US,100,US,M
|
||||
564,2022,SE,FT,Data Analyst,116150,USD,116150,US,100,US,M
|
||||
565,2022,SE,FT,Data Engineer,54000,USD,54000,US,0,US,M
|
||||
566,2022,SE,FT,Data Analyst,170000,USD,170000,US,100,US,M
|
||||
567,2022,MI,FT,Data Analyst,50000,GBP,65438,GB,0,GB,M
|
||||
568,2022,SE,FT,Data Analyst,80000,USD,80000,US,100,US,M
|
||||
569,2022,SE,FT,Data Scientist,140000,USD,140000,US,100,US,M
|
||||
570,2022,SE,FT,Data Scientist,210000,USD,210000,US,100,US,M
|
||||
571,2022,SE,FT,Data Scientist,140000,USD,140000,US,100,US,M
|
||||
572,2022,SE,FT,Data Analyst,100000,USD,100000,US,100,US,M
|
||||
573,2022,SE,FT,Data Analyst,69000,USD,69000,US,100,US,M
|
||||
574,2022,SE,FT,Data Scientist,210000,USD,210000,US,100,US,M
|
||||
575,2022,SE,FT,Data Scientist,140000,USD,140000,US,100,US,M
|
||||
576,2022,SE,FT,Data Scientist,210000,USD,210000,US,100,US,M
|
||||
577,2022,SE,FT,Data Analyst,150075,USD,150075,US,100,US,M
|
||||
578,2022,SE,FT,Data Engineer,100000,USD,100000,US,100,US,M
|
||||
579,2022,SE,FT,Data Engineer,25000,USD,25000,US,100,US,M
|
||||
580,2022,SE,FT,Data Analyst,126500,USD,126500,US,100,US,M
|
||||
581,2022,SE,FT,Data Analyst,106260,USD,106260,US,100,US,M
|
||||
582,2022,SE,FT,Data Engineer,220110,USD,220110,US,100,US,M
|
||||
583,2022,SE,FT,Data Engineer,160080,USD,160080,US,100,US,M
|
||||
584,2022,SE,FT,Data Analyst,105000,USD,105000,US,100,US,M
|
||||
585,2022,SE,FT,Data Analyst,110925,USD,110925,US,100,US,M
|
||||
586,2022,MI,FT,Data Analyst,35000,GBP,45807,GB,0,GB,M
|
||||
587,2022,SE,FT,Data Scientist,140000,USD,140000,US,100,US,M
|
||||
588,2022,SE,FT,Data Analyst,99000,USD,99000,US,0,US,M
|
||||
589,2022,SE,FT,Data Analyst,60000,USD,60000,US,100,US,M
|
||||
590,2022,SE,FT,Data Architect,192564,USD,192564,US,100,US,M
|
||||
591,2022,SE,FT,Data Architect,144854,USD,144854,US,100,US,M
|
||||
592,2022,SE,FT,Data Scientist,230000,USD,230000,US,100,US,M
|
||||
593,2022,SE,FT,Data Scientist,150000,USD,150000,US,100,US,M
|
||||
594,2022,SE,FT,Data Analytics Manager,150260,USD,150260,US,100,US,M
|
||||
595,2022,SE,FT,Data Analytics Manager,109280,USD,109280,US,100,US,M
|
||||
596,2022,SE,FT,Data Scientist,210000,USD,210000,US,100,US,M
|
||||
597,2022,SE,FT,Data Analyst,170000,USD,170000,US,100,US,M
|
||||
598,2022,MI,FT,Data Scientist,160000,USD,160000,US,100,US,M
|
||||
599,2022,MI,FT,Data Scientist,130000,USD,130000,US,100,US,M
|
||||
600,2022,EN,FT,Data Analyst,67000,USD,67000,CA,0,CA,M
|
||||
601,2022,EN,FT,Data Analyst,52000,USD,52000,CA,0,CA,M
|
||||
602,2022,SE,FT,Data Engineer,154000,USD,154000,US,100,US,M
|
||||
603,2022,SE,FT,Data Engineer,126000,USD,126000,US,100,US,M
|
||||
604,2022,SE,FT,Data Analyst,129000,USD,129000,US,0,US,M
|
||||
605,2022,SE,FT,Data Analyst,150000,USD,150000,US,100,US,M
|
||||
606,2022,MI,FT,AI Scientist,200000,USD,200000,IN,100,US,L
|
|
Before Width: | Height: | Size: 123 KiB |
@ -1,60 +0,0 @@
|
||||
import pandas as pd
|
||||
from sklearn.model_selection import train_test_split
|
||||
from sklearn.linear_model import Lasso
|
||||
from sklearn.metrics import mean_squared_error
|
||||
from sklearn.preprocessing import StandardScaler, OneHotEncoder
|
||||
from sklearn.compose import ColumnTransformer
|
||||
from sklearn.pipeline import Pipeline
|
||||
import matplotlib.pyplot as plt
|
||||
|
||||
# Загрузка данных
|
||||
file_path = 'ds_salaries.csv'
|
||||
data = pd.read_csv(file_path)
|
||||
|
||||
# Предварительная обработка данных
|
||||
categorical_features = ['experience_level', 'employment_type', 'company_location', 'company_size']
|
||||
numeric_features = ['work_year']
|
||||
|
||||
preprocessor = ColumnTransformer(
|
||||
transformers=[
|
||||
('num', StandardScaler(), numeric_features),
|
||||
('cat', OneHotEncoder(handle_unknown='ignore'), categorical_features)
|
||||
])
|
||||
|
||||
# Выбор признаков
|
||||
features = ['work_year', 'experience_level', 'employment_type', 'company_location', 'company_size']
|
||||
X = data[features]
|
||||
y = data['salary_in_usd']
|
||||
|
||||
# Разделение данных на обучающий и тестовый наборы
|
||||
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
|
||||
|
||||
# Создание и обучение модели с использованием предварительного обработчика данных
|
||||
alpha = 0.01
|
||||
lasso_model = Pipeline([
|
||||
('preprocessor', preprocessor),
|
||||
('lasso', Lasso(alpha=alpha))
|
||||
])
|
||||
|
||||
lasso_model.fit(X_train, y_train)
|
||||
|
||||
# Получение прогнозов
|
||||
y_pred = lasso_model.predict(X_test)
|
||||
|
||||
# Оценка точности модели
|
||||
accuracy = lasso_model.score(X_test, y_test)
|
||||
mse = mean_squared_error(y_test, y_pred)
|
||||
|
||||
print(f"R^2 Score: {accuracy:.2f}")
|
||||
print(f"Mean Squared Error: {mse:.2f}")
|
||||
|
||||
# Вывод предсказанных и фактических значений
|
||||
predictions_df = pd.DataFrame({'Actual': y_test, 'Predicted': y_pred})
|
||||
print(predictions_df)
|
||||
|
||||
# Визуализация весов (коэффициентов) модели
|
||||
coefficients = pd.Series(lasso_model.named_steps['lasso'].coef_, index=numeric_features + list(lasso_model.named_steps['preprocessor'].transformers_[1][1].get_feature_names(categorical_features)))
|
||||
plt.figure(figsize=(10, 6))
|
||||
coefficients.sort_values().plot(kind='barh')
|
||||
plt.title('Lasso Regression Coefficients')
|
||||
plt.show()
|