Compare commits

..

No commits in common. "main" and "verina_daria_lab_4" have entirely different histories.

801 changed files with 74 additions and 8503018 deletions

143
.idea/workspace.xml generated
View File

@ -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">{
&quot;keyToString&quot;: {
&quot;RunOnceActivity.OpenProjectViewOnStart&quot;: &quot;true&quot;,
&quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
&quot;WebServerToolWindowFactoryState&quot;: &quot;false&quot;,
&quot;git-widget-placeholder&quot;: &quot;senkin__alexander__lab__1&quot;,
&quot;last_opened_file_path&quot;: &quot;D:/ulstukek/Course4/IIS/labs&quot;,
&quot;node.js.detected.package.eslint&quot;: &quot;true&quot;,
&quot;node.js.detected.package.tslint&quot;: &quot;true&quot;,
&quot;node.js.selected.package.eslint&quot;: &quot;(autodetect)&quot;,
&quot;node.js.selected.package.tslint&quot;: &quot;(autodetect)&quot;,
&quot;nodejs_package_manager_path&quot;: &quot;npm&quot;,
&quot;settings.editor.selected.configurable&quot;: &quot;reference.settings.ide.settings.new.ui&quot;,
&quot;vue.rearranger.settings.migration&quot;: &quot;true&quot;
}
}]]></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>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 251 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

View File

@ -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: В этот кластер входят дома с низкими доходами и средним возрастом жилья. Возможно, это районы с более доступным жильем.

File diff suppressed because it is too large Load Diff

View File

@ -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()

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 247 KiB

View File

@ -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) представляет собой среднюю ошибку в предсказаниях в единицах целевой переменной.
Общий вывод: Результаты говорят о том, что модель демонстрирует неплохое соответствие данным, но есть возможность для улучшений.

File diff suppressed because it is too large Load Diff

View File

@ -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()

View File

@ -1,82 +0,0 @@
Вариант 2
Задание:
Использовать нейронную сеть(четные варианты MLPRegressor, нечетные MLPClassifier)для данных из таблицы 1 по варианту, самостоятельно сформулировав задачу. Интерпретировать результаты и оценить, насколько хорошо
она подходит для решения сформулированной вами задачи.
Данные:
Данный набор данных использовался во второй главе недавней книги Аурелиена Жерона "Практическое машинное обучение с помощью Scikit-Learn и TensorFlow". Он служит отличным введением в реализацию алгоритмов машинного обучения, потому что требует минимальной предварительной обработки данных, содержит легко понимаемый список переменных и находится в оптимальном размере, который не слишком мал и не слишком большой.
Данные содержат информацию о домах в определенном районе Калифорнии и некоторую сводную статистику на основе данных переписи 1990 года. Следует отметить, что данные не прошли предварительную очистку, и для них требуются некоторые этапы предварительной обработки. Столбцы включают в себя следующие переменные, их названия весьма наглядно описывают их суть:
долгота longitude
широта latitude
средний возраст жилья median_house_value
общее количество комнат total_rooms
общее количество спален total_bedrooms
население population
домохозяйства households
медианный доход median_income
Запуск:
Запустите файл lab6.py
Описание программы:
1. Загрузка данных:
- Программа начинается с загрузки данных из файла 'housing.csv' с использованием библиотеки pandas.
- Пропущенные значения в данных удаляются с помощью `dropna()`.
2. Выбор признаков и целевой переменной:
- Из загруженных данных выбираются признаки (features) и целевая переменная (target).
- В данном случае, признаки включают 'total_rooms', 'total_bedrooms', 'population', 'households', и 'median_income', а целевая переменная - 'median_house_value'.
3. Разделение данных:
- Данные разделяются на тренировочный и тестовый наборы с использованием `train_test_split`.
- В данной программе 90% данных используются для тренировки и 10% для тестирования.
4. Масштабирование признаков:
- Признаки и целевая переменная масштабируются с использованием `StandardScaler`, чтобы улучшить производительность нейронной сети.
5. Создание и обучение MLPRegressor:
- Создается модель MLPRegressor с заданными параметрами, такими как размеры скрытых слоев (hidden_layer_sizes), количество итераций (max_iter), и начальное состояние (random_state).
- Модель обучается на тренировочных данных с использованием `fit`.
6. Предсказания и оценка производительности:
- Модель делает предсказания на тестовых данных с использованием `predict`.
- Оцениваются различные метрики производительности, такие как среднеквадратичная ошибка (MSE), среднеабсолютное отклонение (MAE) и коэффициент детерминации (R^2).
7. Вывод результатов:
- Результаты оценки модели выводятся на экран, включая среднеквадратичную ошибку, среднеабсолютное отклонение и коэффициент детерминации.
Результаты:
![Alt text](image.png)
![Alt text](image-1.png)
Выводы:
1. Среднеквадратичная ошибка (MSE): 69877.11%
- Эта метрика измеряет среднеквадратичное отклонение предсказанных значений от фактических. Чем меньше значение MSE, тем лучше. В данном случае, значение 69877.11% ОГРОМНО, что может свидетельствовать о значительном разбросе между фактическими и предсказанными значениями.
2. Среднеабсолютное отклонение (MAE): 49654.91%
- MAE измеряет среднее абсолютное отклонение предсказанных значений от фактических. Аналогично, чем меньше значение MAE, тем лучше. Здесь значение 49654.91% также довольно больше.
3. Коэффициент детерминации (R^2): 64.58%
- R^2 измеряет, насколько хорошо модель соответствует вариации в данных. Значение 64.58% говорит о том, что модель объясняет 64.58% дисперсии в целевой переменной. Это можно считать средним результатом.
Интерпретация результатов:
- В данном случае, модель MLPRegressor, обученная на выбранных признаках, не показала высокую точность предсказания целевой переменной (median_house_value).
- Значения метрик (MSE, MAE, R^2) указывают на некоторую степень ошибки модели.
Общий вывод:
- В данной программе представленный MLPRegressor не дал оптимальных результатов. Дальнейшие исследования и настройка параметров могут потребоваться для улучшения точности предсказаний модели.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

View File

@ -1,49 +0,0 @@
# Использовать нейронную сеть(четные варианты MLPRegressor, нечетные MLPClassifier)для данных из таблицы 1
# по варианту, самостоятельно сформулировав задачу. Интерпретировать результаты и оценить, насколько хорошо
# она подходит для решения сформулированной вами задачи.
# Вариант 2 MLPRegressor
# Импортируем необходимые библиотеки
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.neural_network import MLPRegressor
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score
import math
# Загрузим данные
df = pd.read_csv('housing.csv')
df.dropna(inplace=True)
# Выберем признаки и целевую переменную (доход)
features_list = ['total_rooms', 'total_bedrooms', 'population', 'households', 'median_income']
features = df[features_list].copy()
target = df['median_house_value'].copy()
# Разделим данные на тренировочный и тестовый наборы
X_train, X_test, y_train, y_test = train_test_split(features, target, test_size=0.1, random_state=42)
# Масштабируем признаки и целевую переменную
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
# Создаем модель MLPRegressor
mlp_regressor = MLPRegressor(hidden_layer_sizes=(100, 50), max_iter=1500, random_state=42)
# Обучаем модель на тренировочных данных
mlp_regressor.fit(X_train_scaled, y_train)
# Делаем предсказания на тестовых данных
predictions = mlp_regressor.predict(X_test_scaled)
# Оцениваем производительность модели
mse = mean_squared_error(y_test, predictions)
mae = mean_absolute_error(y_test, predictions)
r2 = r2_score(y_test, predictions)
print(f"Среднеквадратичная ошибка (MSE): {round(math.sqrt(mse), 2)}%")
print(f"Среднеабсолютное отклонение (MAE): {round(mae, 2)}%")
print(f"Коэффициент детерминации (R^2): {round(r2, 4) * 100}%")

View File

@ -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
Выводы:
Результаты генерации текстов на русском и английском языках демонстрируют, что обученные модели способны создавать относительно осмысленные последовательности слов, на английском языке текст получился лучше, возможно следует выбрать другие художественные тексты на русском языке для обучения модели.

View File

@ -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)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 131 KiB

View File

@ -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 % текст получился оригинальный, а значит модель не переобучилась.
Таким образом, спроектированная архитектура рекурентной нейронной сети подходит для генерации текстов.

View File

@ -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)]

View File

@ -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.
“Hes not a monster,” the steely voice frightens.
- He's a predator, sir...
The corners of the elders 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 Renos 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 cant 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 boys 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 didnt 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 alphas 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 thats the last thing I want right now.
Every resident of Botswana has already heard about harsh methods of retribution for disobedience.
“Sir, heres 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 dont want to be eaten by him, do you?” - he is silent. “Then give him what he wants and he wont hurt you.”
“Sir, please,” he begs in a trembling voice. “Hes 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 cant…” he whispers quietly, looking only into the gray eyes opposite.
Who could? Apparently, only the owner of this beast himself.
- You're not up toIm lying to say that,” Jungkook tilts his head slightly to his shoulder. “You havent even come close to him, which means you dont 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 wouldnt follow him: its 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 didnt 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 didnt 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.” “Hes a predator, not a killer,” Yezi relaxes a little and nods briefly, remembering his words. “He needs food, not someones death,” Reno, having finished, looks at his striped boy.
“Hes 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. Its 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 owners 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 alphas chest at night. And when he couldnt 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 animals stomach with his large palm. He does not calm down, he already runs his tongue along the alphas neck - showing his true love for him. Jungkook lowers himself to the ground and runs both hands through the tigers 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-Renos chin, who laughs at this behavior. No one will ever dare to scold him for this.
“Youre getting heavier and heavier every day, Diego,” Jungkook chuckles and continues to stroke him. “Youre 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. “Youll never scare me alone, dont 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, dont worry,” he chuckles and looks at the camera screen, adjusting the colors.
“Its not ugly,” he decides to give a compliment and is afraid of the guys 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 doesnt look down where he shouldnt. 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 didnt at all expect to hear that this fair-haired guy was from South Africa, since he didnt 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.
“Ill be honest, I couldnt 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 didnt 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 omegas 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 dads 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 doesnt 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 Taehyungs 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. Its 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.
“Dont 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 wasnt 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.
“Im 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 Taehyungs 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. Its 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 didnt 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.
“Its 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 wouldnt 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 dont 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 brothers 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 elders reaction. “Im 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 omegas 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.
“Ive told you the answer many times,” the alpha says calmly.
“And every time I dont like him.”
“But he wont 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.
“Youre 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 doesnt get the words he needs. Juhyuk becomes gloomy when he hears such words from him, changes his tone of voice and literally breaks Taehyungs 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.
“Youre the one whos 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 didnt spend a minute thinking and immediately chose South Africa, throwing China out of his mind.
“No,” kisses the younger alpha on the forehead.
“Youre disgusting, Juhyuk,” Taehyung snorts, rolling his eyes and rubbing his head against someone elses chest.
He laughs hoarsely.
- Nasty?
“Thats right,” he immediately confirms. “I dont 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 doesnt 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.

View File

@ -1,178 +0,0 @@
Сегодня во дворе вновь не стоит покой, ведь хищный зверь уже не спит.
Каждый, находящийся на ядовитой территории, прикусывает свой язык, точно ждёт, когда их всех в клочья разорвут: жестоко и кровожадно. Оборачиваются по сторонам: судорожно и пугливо. В их венах кровь стынет, сердце глухо бьётся в груди, и черти перед глазами пляшут.
Никто им не позволяет сдвинуться с места и укрыться хотя бы за высокими деревьями поблизости. Их могут и там обнаружить. Они слышат очень тихие шаги, и всё это лишь воображение, построенное на страхе и испуге, которые пульсируют острой болью в висках. Шепчут слова богам, в которых они верят и которым поклоняются, и раз эти люди все ещё живы на этой земле, то, вероятно, их слышат. Но им самим кажется, что если двинутся лишний раз слишком резко, то их смогут найти и не оставят ничего похожего на человека. Мысль подобная будоражит и сводит с ума всё сильнее с каждой никчемной минутой, пропитанной трусостью.
Единственный хозяин территории, где находятся запуганные, несмелые, изредка очерчивает их силуэты холодным взглядом и восхищается тем, сколько в них страха живёт только из-за одного живого существа. Они ничего не знают о смелости. Ему порой бывает тошно от подобного поведения, но винить этих людей ни в чём не собирается, так как он один тут знает язык не только человеческий. Он вырос в таких условиях, был воспитан по-другому: необычно и дико для остальных жителей планеты. Почти с рождения учился тем вещам, из-за которых могут посчитать его сумасшедшим, безумцем на этой ядовитой территории. А яд протекает по земле только из-за образа жизни, взглядов, принципов, традиций.
Альфа смотрит на вооруженных охранников его дома — те воевали, видели множество смертей, но по-прежнему имеют страх в груди, — теперь выразительные глаза держит на оранжевом заходящем солнце, которое своим тусклым светом освещает всю Ботсвану, и позже возвращает к своим рукам с двумя большими острыми ножами. Их он звонко точит друг об друга, замечает яркий блеск и отражение своего лица. Видит того, кого боятся многие люди на этой земле. Сам себе построил ужасающую репутацию.
Мужчина вновь отвлекается от своего занятия, откладывает холодное оружие на каменистую землю и поворачивает голову. Слышит приближающиеся шаги и полностью переключается на этот звук. Темнокожий альфа лет двенадцати всем телом трясётся, и по вискам его капельки пота катятся. Поднос, который он держит в своих детских руках, шумит вместе с его сердцем. Боится, но пытается скрыть это перед хозяином ядовитой территории. А тот всё видит, не злится, только лишь чувствует, как пробуждается в нём интерес. Этот парнишка, двигающийся в его сторону, до ужаса сейчас напуган, страшится живого существа, но продолжает идти к нему, периодически осматривая огромный двор, откуда может выскочить он. С таким же страхом оглядываются и охранники, стоящие у высоких железных решетчатых ворот.
Они все дети. Они все одинаковые.
Мальчишка приближается и сразу опускает запуганный взгляд, жуя губы и понятия не имея, с чего ему нужно начать. Здесь он новенький: не прошла и неделя с его прибытия в этот огромный дом.
— Сэр… — совсем негромко слышится его детский голос, а старший только выгибает бровь. — Чон-Рено, — вспоминает, как папа говорил ему, что хозяин дома больше предпочитает, чтобы его звали по фамилии. — Ваш… — он протягивает поднос чуть вперёд и понимает, что снова забыл, как называется алкоголь, наполняющий небольшой хрустальный стакан. — Ваш… — повторяет и проглатывает слюну. — То, что вы просили.
— Ром, — помогает ему Чон-Рено. — Это ром, Ези, — берёт стакан с напитком и кивает. Мальчик поднимает на него удивлённые глаза, не рассчитывая, что мужчина будет помнить его имя. — Почему ты так боишься? — сужает свои ярко-серые глаза, немного склонив голову.
Ези хлопает густыми чёрными ресницами.
Неужто старший альфа действительно не знает, почему всем на этой территории сейчас страшно? Даже сам Бог об этом догадывается.
Должен и львиный Бог догадаться…
— Вы выпустили Диего, — произносит это так, точно пытается донести до Рено всю глубину его безумия.
— Он не монстр, — стальной голос пугает.
— Он хищник, сэр…
Уголки сухих губ старшего немного дёргаются, и безразличный отводится взгляд в сторону.
Его хищник.
Диего поблизости не видно. Его мальчик развлекается, довольствуется хождением по земле, чистым вечерним воздухом и большим оранжевым солнцем, которое дарит свой теплый свет. Зверь его лучи ловит и рычит. Тоже живое существо, и оно точно так же, как и люди, желает быть свободным и отпущенным, но в отличие от жалких людей, он не трус и не боится созданного Богом. Сильнее, мудрее и опаснее. Этого могущественного хищника наконец слышно: звуки, которые он издаёт, привлекают драгоценное внимание Рено, а темнокожего мальчишку заставляют вздрогнуть и обернуться, огромными напуганными глазами шастая по территории. Страх у него танцует в крови, и сердце бьётся загнанной в угол жалкой пташкой. Он содрогается от противоречивых ощущений, что замечает и мужчина рядом с ним.
Чон-Рено бесцветно смотрит на Белло Ези, на двенадцатилетнего альфу из бедной семьи, работающей в этом большом особняке. Мужчина знаком с ним пару дней, и тот ещё никак не привыкнет к обычному образу жизни хозяина этого очага ужаса и безумия.
— Ези, — холодно призывает и получает должное внимание к себе. — Пойди в дом, попроси положить мясо для Диего, — младший быстро кивает и собирается уйти. — И принесёшь мне его сам, — а эти слова уже казались намного страшнее.
— Что?.. — переспрашивает, не веря.
— Ты меня услышал.
Но кажется, что ослышался.
В груди копошится ужасное чувство трусости и обиды, но Ези никак не может возразить или высказать своё нежелание выходить во двор во второй раз, да и ещё с сырым куском мяса для хищника. Ему остаётся только невнятно опять кивнуть старшему и торопливо пойти к лестнице, ведущей к дверям особняка.
А сам владелец дома хмыкает на пугливую реакцию мальчишки. Он, не сделав глотка, опускает стакан рома на землю и поднимается с небольшого кресла. Разминая ладонью шею, на которой детально прорисована морда льва, альфа точно готовится к жестокому кровопролитному бою. Опять. Его серые глаза яркие, спокойные, однако заинтересованность в предстоящем через пару минут в зрачках мелко блестит. Проводя кончиком языка по нижней губе, Чон-Рено взглядом бегает по обширному двору, где пока не виднеется любимая фигура — она слышится так чётко и громко, что невозможно скрыть своё восхищение и искреннюю любовь. Но эти звуки нисколько не могут успокоить охранников у ворот. Они к ним не привыкли. Никогда не привыкнут, потому что не воспитали его, как это сделал Чонгук.
Когда из дома наконец-то выходит Ези, держа в руках небольшой поднос с куском мяса, Рено вновь усмехается и заводит руки за спину. Ожидает его, смотрит и издалека слышит, как отчаянно ломает сердце грудную клетку маленькому альфе. Тот всё ближе к нему, часто оглядывается по сторонам и что-то шепчет себе под нос. Неужели молитвы? Мужчина сгибает бровь и поворачивает голову, слыша ещё один громкий рёв, которым он мог только гордиться. Его мальчик очень подрос, стал крепким, поэтому всех так пугает. Может быть, у Чон-Рено его звуки вызывают довольную улыбку, но у Ези они вызывают желание спрятаться за одну из колонн. Только его ждёт сам Рено, и он не может себе позволить выполнить желаемое, иначе правда получит заслуженное наказание. А этого сейчас хочется меньше всего.
Уже каждый житель Ботсваны наслышан о жёстких методах расплаты за непослушание.
— Сэр, вот мясо, — шепчет Ези, становясь напротив мужчины и чувствуя, как слёзы подступают к выразительным глазам. — Можно я уже пойду в дом?..
Детское сердце так и просится к папе.
— Нет, — мороз и холод.
Мальчик от подобного ответа сильнее сжимается и прикусывает до боли губу, а затем послушно переводит взгляд туда, куда смотрит Чонгук.
Теперь глаза Диего появляются в полутьме.
Страх бьется в груди вторым сердцем, в горле резко пересыхает. Ези хочет убежать отсюда, когда видит, что хищное животное выходит из-за угла особняка, показывает, что здесь является тоже хозяином. Он смотрит на темнокожего мальчика и стоящего рядом с ним высокого мужчину, показывающего гордую улыбку на сухих губах. Шаги его, медленные, уверенные, ведь он хорошо знает себе цену и как величественно он сейчас выглядит под оранжевым светом закатного неба. Гуляет смело и грациозно, пронзает острым взглядом, чуя еду где-то рядом с собой. Взгляд — дикий, свободный, всесильный. Полоски, плавно расположенные на его бархатной шерсти, всегда могли привлекать чужой взгляд, сводить с ума и молить о помиловании. Тёмные полосы — тени от высоких деревьев, а между ними горят желтые блики африканского солнца. Весь вид зверя умиротворённый, но от него почему-то дрожь бежит кошмарно по коже.
Так красив и молод. Рено от него заинтересованный взор отвести не в состоянии, как и застывший бедный Ези. Он впервые видит зверя так хорошо и чётко, до этого был лишь наслышан о могущественном Диего, чей внешний вид вынуждает каждого поверить в Бога. Даже обыкновенные шаги гипнотизируют всех на этой территории.
Чонгук опускает глаза на Белло Ези и хмыкает.
— Поднеси ему поближе его закуску, — мальчик глотает нервно слюну и ошарашенно смотрит снизу вверх на Чон-Рено. — Единственный способ спастись от хищника — скормить ему что-нибудь другое, — читает поучительно ему то, во что Ези не верит, и старший опускается на корточки перед ним, заглядывая в стеклянные округлившиеся глаза. — Ты не хочешь быть съеденным им, ведь так? — тот молчит. — Тогда дай ему то, что он хочет, и он тебя не тронет.
— Сэр, пожалуйста, — молит его дрожащим голосом. — Он тигр, я никогда к ним не подходил… — говорит ему очевидные вещи, надеясь на жалость. — Это опасно…
— Отнеси Диего это мясо, Ези, — твёрдо и неоспоримо.
В миг мальчику становится страшнее от Чон-Рено Чонгука, нежели от огромного молодого тигра, медленно движущегося в их сторону.
— Я не могу… — тихо шепчет, смотря лишь в серые глаза напротив.
А кто бы смог? Видимо, только сам хозяин этого зверя.
— Ты не должен так говорить, — Чонгук немного наклоняет голову к плечу. — Ты ведь даже не приблизился к нему, значит, и не знаешь точно, можешь или же нет, — Ези поджимает губы. — Вперёд, — приказывает, кивнув в сторону Диего.
Бенгальский тигр всё ближе к ним, продолжает двигаться и держит свои жёлтые глаза только на незнакомом ему человеке. Впервые видит, поэтому так хищно анализирует, заставляя Ези затаить дыхание и сделать наконец-то напряженный шаг вперёд. К Диего.
За ним внимательно наблюдает и Рено, который спокойно встаёт обратно на ноги и выпрямляется в спине. Мальчик правда хорошо держится. Чонгук уже рассчитывал, что он расплачется и просто унесётся отсюда. За ним бы не пошёл: не ему судить подростка за вполне существенный и логичный страх. Не каждый здесь решается подходить к Диего и кормить его. А правильнее, так ещё никто не делал. Только Чон-Рено к нему настолько близко находится: живёт с ним в одной комнате и не смеет даже бояться этого зверя, которого сам спас, сам и воспитал. Тигр его лишь в шутку может укусить, не причиняя сильной боли. Но Ези кажется, что настал тот день, когда ему придётся попрощаться со своей короткой жизнью. Уж точно не думал, что умрёт от клыков тигра. Подобные ужасы ему в голову никогда не лезли.
Диего, замечая и чуя кусок мяса, ускоряет свой шаг и издает негромкий рык, что может только сильнее напугать мальчика, который по-прежнему надеется на разумные мысли Чонгука, стоящего позади, но останавливаться не собирается.
Раз суждено умереть сегодня, пусть так и будет.
Ези уже смело смотрит в глаза приближающемуся к нему тигру и останавливается в паре метров от Чон-Рено, опускаясь на корточки и держа свой взгляд на безумно красивом звере. Этому смелому шагу старший альфа даже немного удивляется, наблюдая за происходящим и слегка ухмыляясь. Младший прикусывает нижнюю губу и опускает взор на алый кусок мяса на серебряном подносе, который он кладёт на каменистую землю, делая неуверенный маленький шаг назад. Он до боли жмурит глаза и сжимает крепко пальцы в кулак, уже начиная чувствовать несуществующую боль, принесенную ему в скором будущем голодным тигром. За эти секунды успевает попрощаться со своими родителями, шепотом просит прощения у них за все свои оплошности, слушая приближающиеся шаги. У него, кажется, сердце остановится раньше, чем зверь подойдёт.
Но…
Солнцем целованный тигр — Диего — рычит на весь двор, величественно разгоняя птиц на деревьях и на крыше особняка. Ези испуганно распахивает веки и видит перед собой злую морду и огромную пасть животного, которое всаживает в следующую секунду клыки в кусок сырого мяса. Он не прекращает рычать на мальчика, точно пытается что-то ему сказать этим. Но подросток только ошарашенно смотрит в жёлтые глаза и забывает дышать, падая пятой точкой на землю и открывая рот. Диего лишь забирает мясо и отбегает в сторону, швыряет свою закуску подальше от мальчишки, ложится рядом с ней и спокойно начинает облизывать и поедать любимое лакомство, лишая Ези мысли о возможной смерти. С удовольствием и рычанием отрывает маленькие кусочки, сразу же их проглатывая и иногда поглядывая на своего хозяина.
Чонгук слабо улыбается, смотря на тигра и пряча обе руки в карманы чёрных брюк-карго. Он медленно переводит с него взгляд на мальчика, лежащего на земле и глядевшего с прежним шоком на тихого Диего, который больше не обращает на него никакого внимания. Зверь занят своей настоящей едой, а не человеком, который поднёс её ему. Наверное, только Чонгук до последних секунд был убеждён, что Диего не тронет Ези.
В своём тигре и в своих львах никогда не сомневается.
Каждое их движение наперёд знает.
Темнокожий мальчик и многие иностранцы рассчитывают, что каждый африканец разговаривает с животными на равных, понимает их мысли и язык. Но во всей Ботсване мало таких. Единицы. И среди них на вершине стоит Чон-Рено Чонгук — львиный Бог. Только Белло Ези сейчас кажется, что мужчина в свои двадцать восемь лет стал ещё и покровителем тигров.
У молодого альфы с трудом получается подняться с земли, отвести взгляд от Диего и обернуться к его хозяину, смотревшему так остро и пронзительно на него. Теперь Чонгук к ним приближается: спокойно и медленно. Но Ези больше не боится, будто тигр одарил его невероятной храбростью из-за близости с ним. Альфа верит в подобные сказки, услышанные из чужих уст. Верит и в то ужасающее чувство, что хранится в груди мужчины, у кого на шее чёрными чернилами изображена морда льва. Истинный львиный Бог. Этот Бог становится в метре от уже не напуганного мальчика, а восхищенного увиденным две минуты назад. Конечно же, его поразило то, как близко к нему был молодой бенгальский тигр. Эту историю друзьям и одноклассникам рассказывать побежал бы, но те ни за что не поверят, поэтому важное воспоминание поселит глубоко в сердце.
— Сэр… — шокировано начинает Ези, глотнув слюну. — Диего не тронул меня, — смотрит на Чонгука, хмыкнувшего себе под нос. — Почему? Он ведь мог…
Хватило бы пары секунд, чтобы зверь кровожадно растерзал его.
— Ты скормил ему что-то другое и остался нетронутым, — раздаётся басистый тяжелый голос. — Клыки и когти не всадились в тебя лишь по этой причине. Он хищник, а не убийца, — Ези немного расслабляется и коротко кивает, запоминая его слова. — Ему нужна еда — не чья-то смерть, — Рено, закончив, смотрит уже на своего полосатого мальчика.
— Он очень красивый, — тихо признается Ези, тоже взглянув в сторону зверя.
Чонгук опускает на него глаза и усмехается.
— Невероятно красивый, — вслух подтверждает.
Ези улыбается и в конечном итоге не таит в себе вопрос:
Могу я теперь пойти?..
Рено кивает без слов.
Ези широко улыбается и берёт с земли поднос, после чего бежит в огромный особняк, желая рассказать о случившемся своему отцу, который отвечает за кухню.
На полосатой шерсти сказочно играют яркие лучи заходящего африканского солнца. Чонгук в данный момент очарован этим видом перед собой. Диего сильно подрос. Ему только полтора года, но размеры у него, как у взрослого тигра. Сложно поверить, что не так давно зверь был зверьком, совсем крохотным, и постоянно вился рядом с Чон-Рено, не отходил толком от него: лез, игриво рычал и кусал хозяина за ноги, желая привлечь должное внимание к себе. Привык к Чонгуку слишком быстро. После того, как Чонгук забрал его раненным взрослыми зверями к себе, тигрёнку хватило две недели, чтобы довериться полностью и тайно залезать на грудь альфы по ночам. А когда не мог уснуть, царапал и кусал за подбородок, вынуждая Чонгука проснуться. И тот просыпался, играл, кормил и возвращался обратно в постель, а за ним и маленький Диего своей величественной походкой.
По сей день тигр делает то же самое.
Чонгук с улыбкой на губах медленно подходит к животному, которое с диким аппетитом закидывает в рот оставшийся маленький кусок мяса. Диего сам подрывается с места и бежит к своему хозяину, присевшему на корточки. Тигр сразу лезет на него, будто с настоящими человеческими объятиями, игриво начинает издавать рыки, отчего Рено шире улыбается, хлопая и гладя большой ладонью зверя по животу. Тот не успокаивается, уже языком проводит по шее альфы — показывает свою истинную любовь к нему. Чонгук опускается на землю и двумя руками ведет по мягкой шерсти тигра, уделяя положенное внимание месту за ушами, как Диего и любит. С подобной лаской становится котёнком. Крутится, облизывает, где хочет, и тычется носом в подбородок Чон-Рено, который смеётся над таким поведением. Его за такое никогда никто не посмеет поругать.
С каждым днём тяжелее и тяжелее становишься, Диего, — хмыкает Чонгук и продолжает гладить его. — Своим видом всех вокруг пугаешь, большой мальчик, — тигр отстраняется и обходит мужчину, уже прижимаясь к его спине и проводя языком по загривку русых волос. — Одного меня никогда не вспугнёшь, даже не рассчитывай на мой страх, — Рено поворачивает голову к Диего. Тот на него тихо рычит, словно отвечает на сказанные слова. — Мы с тобой два хищника, и одному Богу известно, кто из нас опаснее.
А Чон-Рено уже знает, кто опаснее на этой земле.
Так и жил: шалил в мечтах со скуки, терпел муки и разочарования. В который раз дал он себе слово скорее вернуться домой. Лишь там обретёт спасение, покой в сердце, повезет — кусочек счастья.
Это место заставит его забыть все печали и всю боль, разрешит чувствовать себя так, будто он выпил бутылку вина.
Очередной щелчок и очередной сохраненный божественный кадр на флешке дорогого нового фотоаппарата. Медовые глаза мгновенно цепляются за сделанную фотографию, что высвечивается на небольшом экране. Здешние пейзажи до конца жизни будут вынуждать молодого парня отчетливо ощущать очарование, восторг и восхищение. Взглянув на эти красоты, человек в состоянии избавиться от любой заразы и боли. Здесь ослепшие станут зрячими, оглохшие познают мир звуков. Чистое голубое небо, тёплое ноябрьское солнце, высокие и низкорослые деревья, бегающие по территории дикие животные, всё — всё вынуждало улыбнуться и расслабиться.
Молодой альфа за рулем чёрного джипа, на котором было легко передвигаться по неровным дорогам, поворачивает голову к сидящему на пассажирском сидении омеге, который рассматривает с легкой улыбкой на губах сделанную фотографию. Среди пепельных шелковистых волос путаются чистые лучи необъятного солнца. Скользя ниже, они решаются трогать открытые участки светлой кожи, точно специально освещают заметные следы на теле.
Водителя с первых секунд привлекла одна яркая черта этого парня. Это быстро бросилось в глаза. Всю дорогу мужчина не находит сил выкинуть из головы любопытство: то следит за дорогой, то переводит взгляд на пассажира, тайно рассматривая не только симпатичное лицо.
Прежде не удавалось подобное увидеть.
Это поневоле устрашает, пугает, вынуждает задуматься и свои теории в мыслях построить, а спросить африканец вряд ли осмелится. Возможно, омега не хочет говорить об этом, скрывает что-то и чувствует боль, когда посторонние люди обращают внимание.
Альфа жуёт нижнюю губу и смотрит на дорогу, несильно нажимая на педаль. Омега хлопает ресницами и медленно поворачивает голову, взглянув на водителя. Рассчитывал, что ему кажется, что парень его детально рассматривает по довольно ясной причине, но теперь окончательно убедился в этом. Тот сразу паникует, стыдясь своего бессовестного поведения. А омега тем временем просто смущается, покрывается легким румянцем и тянет глубокий вырез белой футболки вверх, слегка прикрывая острые ключицы, которые только что внимательно исследовали. Обоим от этого действия становится ещё более неловко.
У Ким Тэхёна толком ничего не получается скрыть. Остаётся смириться — этим он занимается на протяжении семи лет.
— Извините, — тихо говорит водитель и поджимает губы. — Я не должен был.
— Вы не первый и не последний, — тянет губы в легкой улыбке Тэхён и смотрит по-доброму на альфу. — Я должен уже привыкнуть к подобному вниманию, не переживайте, — хмыкает и переводит взгляд на экран фотоаппарата, настраивая цвета.
— Это не некрасиво, — решается на комплимент и боится реакции парня, слыша тихий смех. — Правда, — кивает несколько раз он, следя за дорогой. — Скорее, это очень необычно, загадочно…
В этом нет никакой загадки, — отвечает Тэхён и мягко улыбается.
Всё элементарно.
Но все продолжают задавать вопрос: «Что это?» С кем бы ни познакомился — обязательно спросят, а он спокойно ответит. Ему не надоело. С каждым разом всё сильнее и сильнее поражает своей историей.
Как выжил?
Темнокожий альфа больше не затрагивает эту тему, да и Тэхён просто направляет камеру на невероятные пейзажи. До сих пор дух захватывает: слишком красивым, слишком нереальным всё вокруг выглядит. Он делает сразу несколько фотографий для своего архива и лишь через некоторое время понимает, что они совсем скоро прибудут к нужному месту. Эта мысль заставляет зажечься пламя не только в медовых глазах, но и в самом сердце. Парень и отсюда фотографирует любимый вид, рядом с ним точно не стоят городские улицы. Это не Гонконг, который быстро полюбился. Это не Нью-Йорк, куда помчался на неделю. Это даже не Сеул, где начал строить свою новую жизнь. Это нечто поистине красивое, настоящее, божественное, не тронутое современным взглядом. Тут можно увидеть прошлое.
Водитель сразу замечает подобную реакцию и приподнимает уголок губ, смотря на омегу. На его лицо. Больше не переходит черту и не опускает взгляд куда не положено. Анализирует лишь глаза, глядевшие кропотливо в даль, из-за которой у Тэхёна не получается сдержать в себе желание ещё шире улыбнуться. Он спешно отключает свой фотоаппарат и просто довольствуется видом. Чем дальше они едут, тем больше видят диких животных, отдыхающих и гуляющих по бескрайней травянистой местности. Тэхён выглядывает в открытое окно, замечая не слишком далеко любопытную зебру, которая хлопает густыми ресницами и глядит на проезжающий мимо джип. Когда они оказываются уже дальше от этого зверя, омега всё же оборачивается и смеётся, видя, что зебра до сих пор смотрит на него.
Как же скучал…
От любви к этому месту в груди цветы раскрываются, точно после долгого сна.
— Вы впервые в Ботсване? — спрашивает водитель.
Тэхён, расплываясь в счастливой улыбке, поворачивается к нему.
— Почему вы так подумали?
— Вы очарованы местным видом.
Тут любой в восторг от увиденного придёт.
Птицы над ними летают и громко поют. Вокруг одни животные: родители и их детеныши. На одном из высоких деревьев можно обнаружить гепарда, прячущегося от палящего африканского солнца. Пока ехали по неровной дороге, Тэхёну удалось увидеть семейство слонов, пьющих спокойно воду. Их омега запечатлел на фотографии, выйдя из джипа на пару минут.
— Это мой дом, — с гордостью отвечает Тэхён, приподнимая немного подбородок и впитывая глазами вид перед собой через лобовое стекло. — Я здесь родился, — на губах сверкает широкая белоснежная улыбка. — Я приехал на Родину.
Родился в волшебном и до жути красивом мире. Первые шаги были проделаны на этой земле, в Ботсване омега начал лепетать невнятные слова, именно здесь многому научился, и по сей день он помнит каждую мелочь, которую в голову вбивали не только его родители, но и другие жители государства в Южной Африке. Тэхён хранил в голове и сердце все детали, унёс их вместе с собой в другую страну и вернулся обратно, ничего не позабыв. И сейчас только понимает, насколько сильно он скучал по родному континенту, по всем знакомым, одноклассникам и друзьям, с которыми рос.
Но больше всего Тэхён соскучился по своей кровинке. По старшему брату, что сейчас, видимо, на улице стоит и ждёт его возвращения домой спустя четыре года.
Тэхён часы считал до долгожданной поездки. И вот она, перед глазами вся красота, снящаяся ему сладкими ночами.
Альфа действительно удивляется озвученному факту. Нисколько не ожидал услышать, что этот светлый паренёк родом из Южной Африки, поскольку таковым не выглядит, и считал его туристом. Альфа ведь обыкновенный таксист, и Тэхён у него был первым клиентом сегодня. Рано утром с широкой улыбкой и фотоаппаратом в руках запрыгнул в чёрный джип, диктуя адрес и сразу предлагая деньги.
— Признаюсь честно, я не мог и подумать, что вы местный, — дергает бровями альфа и усмехается.
— Взглянув на азиата, никто бы не решил, что он ботсванец, — пожимает плечами Тэхён, ни на секунду не прекращая улыбаться.
— Я не имел в виду вашу расу, — сразу поправляет его добрым и мягким тоном водитель.
Омега выгибает бровь и в неясности смотрит на темнокожего альфу, постепенно погружаясь в свои запутанные мысли. Сказанные в его сторону слова странным образом повлияли на него: вынудили задуматься и невольно проглотить слюну.
Больше всего боялся, что в другой стране прекратит быть тем, кем истинно является. Всеми силами держал в себе истоки, традиции и нравы африканских земель, то, чему его с рождения учили. Родители из своих сыновей делали добрых, миролюбивых, честных людей, лишая обоих алчности и злобы. Независимо от настоящей нации, они пытались взрастить в них душу африканца.
Тэхён чувствует, что и ныне таков. Четыре года жизни в Южной Корее не отняли у него сердце вместе с душой.
Ким Тэхён был ботсванцем и будет являться им даже на другом свете.
Только через некоторое время взгляд омеги падает на собственную дорогую белую обувь и такого же цвета джинсовые шорты чуть выше колен. На правом запястье сверкает бриллиантовый браслет, подаренный дедом, от которого отказаться не мог, хотя до сих пор стыдится его носить. Узнать боится, какова цена этого украшения. Он его получил два месяца назад в качестве подарка на свой восемнадцатый день рождения. Отнекивался, умолял убрать с глаз подобный браслет, уверяя, что и без него обойдется и будет жить счастливо, однако отец папы уж чересчур щедр по отношению к своему младшему внуку, с которым четыре года жил под одной крышей. Тэхён получал и, вероятнее всего, будет получать и в Ботсване от деда вещи, украшения, крупные суммы на карту. Ему этого совершенно не хочется на африканской земле, если только не собирается снимать эти деньги для нуждающихся.
А ему самому хватило и того, что он просто, наконец-то, выбрался из Сеула. Смог вернуться на родную землю. Он хочет вновь пахнуть Африкой, а Африка — им.
Поглощенный своими мыслями и тревогами, Тэхён не успевает заметить, как они приехали к нужному месту. Месту, где он родился и где рос до четырнадцати лет. Джип на низкой скорости въезжает в маленькое поселение с довольно большим количеством аккуратных простых домов. Здесь спокойно и по-домашнему уютно. Здесь есть шанс спастись. Здесь у Тэхёна, окруженного своим прошлым, получится дышать полной грудью. Он даже постарается забыть тот ужас, случившийся с ним семь лет назад.
Простит Ботсване всю моральную и физическую боль.
Машина останавливается где-то посередине пустой улицы, и именно в этот момент сердце Тэхёна начинает биться в два раза быстрее. Водитель быстро глушит мотор и выходит, направляясь к багажнику, дабы помочь омеге с его чемоданами, а Тэхён так и остаётся сидеть на сиденье. Страшно выходить, в какой-то степени даже стыдно. Он такое долгое время не ступал на эту землю, что сейчас считает себя недостойным вновь шагать по этим африканским улицам, точно предал их и обменял на сеульские.
Брат так не поступил. Тэхён — да, и от этого тошно. Но на тот момент решения за него принимали другие.
Губы растягиваются в нежной и слабой улыбке, а рука тянется к ручке двери, которую он через пару секунд осмеливается открыть. Свои светлые глаза останавливает на уже виднеющейся фигуре. Парень, что старше Тэхёна на восемь лет, стоит со скрещёнными на груди руками, улыбаясь уголком губ и разглядывая лицо своего младшего брата. Омега закрывает за собой дверь и поправляет ремешок от фотоаппарата, что висит у него на шее. Смотрят друг на друга и лишь улыбаются широко, не веря собственным сердцам, которые сообщают им, что вновь на этой территории они вместе. Тэхён всё ещё чувствует себя во сне. Он так желал этого. Сотни раз парень просился на родную землю и столько же раз ему отказывали, что вскоре омега начал сомневаться в возможности возвращения домой.
— Джухёк... — на выдохе произносит.
Тэхён закидывает фотоаппарат на спину и подбегает к брату первым, врезаясь в него. Альфа хрипло смеётся и все силы вкладывает в объятия, заодно целуя в пепельную макушку со всей своей любовью к этому человеку. Омега рядом с ним совсем крохотный, как это было в детстве. Нисколько не изменился. Вечно на носочки встаёт, когда пытается обнять Джухёка, который умиляется и поглаживает ладонью спину. Тэхён ярко улыбается, когда альфа легко поднимает его с земли и сжимает крепко в руках, оставляя короткие поцелуи на плече. Омега слегка отстраняется и смотрит на него, излучая одно тепло и искреннее счастье, которого старшему Киму так не хватало шесть месяцев.
Полгода в разлуке. Полгода в мучениях друг без друга находились.
— Тэхён, — наконец-то слышит его голос омега. Джухёк опускает парня на землю и целует в лоб. — Ангел, — младший поднимает на него глаза и морщит нос, улыбаясь.
Так нежен и ласков с ним бывает мужчина.
— Я ужасно ждал этой поездки.
— Мне кажется, я вряд ли найду силы, чтобы вновь отпустить тебя.
Омега хитро смеётся и делает шаг в сторону, чтобы увидеть стоящий маленький, но красивый и аккуратный дом.
— И не ищи, — отвечает Тэхён, взглянув на брата. — Вдруг я больше не вернусь в Сеул, Джухёк? — хмыкает и оборачивается, замечая таксиста с двумя яркими чемоданами, принадлежащими Тэхёну.
Старший Ким окидывает младшего подозрительным взглядом, после чего подходит к водителю чёрного джипа и берёт у него чемоданы, тихо поблагодарив. Тэхён со своего места кивает таксисту и улыбается, благодаря. Омега снова поворачивается к родному дому, отчего в уголках медовых глаз собираются слёзы. Всем телом расслабляется и вбирает в легкие тёплый воздух, оглядывая дом перед собой. Он-то точно поменялся за четыре года, пока Тэхёна здесь не было. Стал красивее, хотя и раньше был таким, но сейчас в нём чётко заметны изменения снаружи, видимо, и внутри всё стало по-другому. Старший брат определённо хорошо постарался улучшить здесь всё. И дело касается не только лишь их очага, но и соседних домов.
Немалые карманные деньги Тэхёна точно пошли на пользу. Не зря он их тайно перечислял Джухёку.
В каком смысле не вернешься обратно? — серьёзно спрашивает альфа, когда подходит ближе.
— Просто мечтаю… — прикусывая губу.
— Мечтаешь?
А ты запрещаешь? — весело хмыкая, забирает у брата чемодан и уходит к дому.
Мужчина щурит глаза и смотрит внимательно на отдаляющуюся спину Тэхёна, задумываясь и идя вскоре за ним. Омега первым входит в дом, затаивая дыхание и поджимая до легкой боли губы. Джухёк же не торопится, поглядывает на младшего и почему-то переживает из-за его реакции. Тот осторожно ступает по новому деревянному полу и очень медленно оглядывается по сторонам, заинтересованно хлопая чёрными ресницами.
Четыре года…
Тэхён правда уже потерял надежду, что вернется опять в этот дом. Одна его сторона просилась обратно, вторая — боялась. Раньше они жили вчетвером, сейчас их только двое.
Джухёк закрывает двери за собой, ни на секунду не отводя от брата глаз. Полностью на нём сосредотачивается. Ему важно знать, что Тэхёну до сих пор приятно здесь находиться, независимо от некоторых изменений. Толком ничего не поменялось: стало красивее и чище. Джухёк очень постарался навести порядок в своём доме, окончательно погрузился в это дело. Отвлекался физическим трудом, не хотел подпускать к себе боль и грусть после того, как остался совсем один в Южной Африке. После того, как родной дед забрал младшего брата к себе в Сеул.
Отец папы рассчитывал, что четырнадцатилетнему подростку будет в Корее намного лучше, нежели в Ботсване. Там молодой омега попытался бы думать о других вещах, уделил бы время различным творческим занятиям, так как в Сеуле есть такая возможность, в Ботсване — нет. Тэхён так и поступил, точнее, просто послушался деда и пошёл в школу, которая была забита учениками, в отличие от африканских школ. В школе на родине не было настолько много детей, и половины даже. Поэтому поначалу Тэхён был очень скован рядом со сверстниками: привыкал к таким большим изменениям довольно долго, порой и боялся находиться в настолько больших компаниях. Они не были похожи на жителей Ботсваны. Абсолютно разные люди: у них другой образ жизни, отличные взгляды и странное поведение.
Но в какой-то момент Тэхён понял, что это у него просто другое сердце.
Полгода был очень тихим. По ночам под одеялом плакал, дрожал всем телом и шевелил мокрыми персиковыми губами, просясь к брату. Дед пытался забрать к себе и Джухёка, но альфа категорически отказывался от подобного предложения. На тот момент ему было двадцать два года, и он вправе был решать сам, что для него лучше. Дед не стал настаивать, лишь предупредил, что обязательно будет помогать ему с деньгами. А Джухёк временами прилетал в Сеул только ради Тэхёна. И единственно в эти периоды младший брат поистине чувствовал себя хорошо, словно ничего ужасного не произошло в его короткой жизни.
— Красиво, — с улыбкой проговаривает Тэхён, посмотрев на альфу.
Старший издает тихий смешок и оставляет чемоданы у стены, подходя ближе к омеге.
— Я рад, что ты так считаешь.
— Тут по-прежнему тот же уют, что и раньше, — очарованно вздыхает, продолжая осматриваться. — Всё та же теплая атмосфера…
В Сеуле такого тепла не было.
— Боялся, что тебе не понравится, — говорит Джухёк. — Я пытался особо ничего не менять, дабы не лишить этот дом прошлого.
От его слов Тэхёну теплее становится.
— Ты правда сохранил прошлое в этом маленьком волшебном доме.
— Наши воспоминания отсюда не исчезнут.
Младший Ким поворачивает голову в сторону мягкого кремового дивана, обращает внимание на маленький стеклянный столик рядом с ним. Долго оглядывать его не приходится, быстро замечает свою собственную фотографию в небольшой рамке. Это селфи, и брат действительно распечатал его, наградив рамкой и поставив на видное место. Тэхён на фотографии широко улыбается, ведь он тогда сфотографировался именно для Джухёка, который задыхался без него в Ботсване, а омега быстро включил фронтальную камеру и улучшил настроение брата своей улыбкой.
— Джухёк, — альфа вопросительно мычит, смотря на Тэхёна, подошедшего медленным шагом к дивану и удерживающего взгляд на фото в рамке. — Я хочу остаться, — со страхом произносит, опасаясь реакции старшего. — Меня не тянет обратно в Сеул, — прикусывает до боли губу и глядит на брата.
Альфа вздыхает и подходит к нему, взяв ангельское лицо в свои большие ладони и начав рассматривать каждый миллиметр. Такой бледный. Кожа светлая, не такая, как раньше.
Корея отняла у него одну из его изюминок. Несколько лет назад цвет был смуглым, загорелым из-за жаркого африканского солнца, но стоило ему отправиться на другой континент, так сразу побледнел. Но всё равно не прекратил блистать красотой. Черты его лица уникальные, необычные, в какой-то степени грубые. Джухёку никогда не надоест повторять брату, насколько он красив, а тот так и продолжит стесняться и пинать его кулаками, чтобы альфа прекратил. Джухёк слишком нежен и добр к нему, но также и строг, как настоящий старший брат.
Только сейчас хочется действительно с ним поспорить и настоять на своем желании.
— Сколько раз нам ещё поднимать эту тему, Тэхён? — спрашивает Джухёк, оглаживая большим пальцем скулу омеги.
— Пока ты не согласишься…
— Прекрати, — чуть жёстче.
Тэхён жует губы и смотрит ему прямо в глаза, после чего альфа отстраняется и садится на диван.
Старший Ким не принимает ярое настоящее желание брата остаться дома. Это невыносимо.
Невыносимо жить там, где сердце не лежит.
— Джухёк… — с мольбой шепчет, присаживаясь рядом.
— Я много раз говорил тебе ответ, — спокойно произносит альфа.
— И каждый раз он мне не нравится.
Но он не поменяется, — резко бросает, несильно поджав губы.
Тэхён тянется к брату и кладёт голову на его грудь, поднимая ноги на диван. Сворачивается, как клубочек.
— Ты несправедлив ко мне, — хмуро смотрит на альфу, слабо обнимая его.
Он всё время отказывает Тэхёну в просьбе остаться. Омега третий год умоляет, но нужных слов так и не получает. Джухёк мрачнеет, когда слышит от него подобные слова, меняет тон голоса и буквально ломает маленькие мечты Тэхёна. Тот до сих пор удивлен, что альфа разрешил ему прилететь хотя бы на некоторое время на Родину, дабы отдохнуть и отвлечься от учёбы. Омега очень усердно старался: рыдал в трубку, как ненормальный, и кричал на брата, пытаясь донести, насколько же сильно скучает по нему. Всё лицо у него тогда от слёз опухло так, что Джухёк, увидев его таким разочарованным на экране своего телефона, через пару дней решил просто сдаться и позволил посетить Южную Африку спустя четыре года.
— Это ты несправедлив к себе, — говорит Джухёк и смотрит прямо в медовые глаза. — У тебя здесь нет будущего, поэтому лучше думай о своей учёбе, которую я тебе ни за что не позволю бросить, — Тэхён от подобного тона немного сжимается. — Приехал ты сюда отдохнуть и обязательно вернешься обратно.
Омега каждой живой клеткой своего организма не желает улетать в Корею. Он живёт там с дедом в огромном особняке, и, наверное, любой житель Африки мечтал бы оказаться в подобном месте, но только не Тэхён. Любит своего деда, но сердце определенно тянет в Ботсвану. Здесь ему куда комфортнее и теплее во всех смыслах. Не только душа долго привыкала к новой обстановке, но и само тело. Из-за смены климата Тэхён часто болел и сидел дома с простудой и жуткой болью в костях.
— Я мог бы летать в Сеул только на экзамены, а занимался бы круглосуточно тут… — с очередным беспокойством произносит, уже понимая, что это альфе не понравится.
Джухёк кидает на него злобный взгляд, угрожая суженными зрачками и очерчивая скулы. Омега поджимает губы и всё равно не отстраняется от брата, только крепче обнимает его и слегка хмурит брови, зная об очередном отказе.
Тэхён пошёл рано в африканскую школу, поэтому и корейскую закончил в семнадцать лет, из-за чего был самым младшим в классе. И сейчас, находясь на первом курсе журналистики, омега так и остаётся самым мелким парнишкой среди своих одногруппников. Это нестрашно, так как Тэхён попытался найти общий язык с ребятами, хотел влиться в их коллектив, и это действительно удалось сделать за пару месяцев. Отношения настолько хорошо между ними сложилось, что некоторые из ребят, в том числе и сам Тэхён, договорились слетать в Пекин в ноябре. И когда поездка была уже на носу, Ким услышал долгожданные слова от старшего брата, который обрадовал его тем, что омега может прилететь на время в Ботсвану. Тэхён и минуты не уделил размышлениям и сразу выбрал Южную Африку, выкинув из головы Китай.
— Нет, — целует в лоб младшего альфа.
— Противный ты, Джухёк, — фыркает Тэхён, закатывая глаза и потираясь головой о чужую грудь.
Тот хрипло смеётся.
— Противный?
— Верно, — сразу подтверждает. — Не хочу оставлять тебя здесь одного, — вздыхает, прикрывая веки. — Я должен находиться в Ботсване.
Родителей рядом нет четыре года, и они вдвоём обязаны жить вместе, а не быть раскинутыми по разным континентам.
— Ботсвана уже не та, ангел, — обнимает младшего брата.
Тэхён не понимает и поднимает на Джухёка вопросительный взгляд. Но вместо ответа альфа лишь дергает уголком губ и касается костяшками пальцев его щеки.
Это движение быстро отгоняет от парня плохие мысли о доме.

View File

@ -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)
## Вывод
Исходя из этого, можно сделать вывод: лучший результат показала модель линейной регрессии.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 332 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

View File

@ -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()

View File

@ -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)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 146 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 155 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

View File

@ -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()

File diff suppressed because it is too large Load Diff

View File

@ -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'.
Эти признаки имеют наибольшее значение при определении классов по объёму выбросов от добычи нефтепродуктов.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 173 KiB

View File

@ -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])

File diff suppressed because it is too large Load Diff

View File

@ -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 кластера хорошо подходит для распределения стран
на группы по объёму выбросов от добычи нефти, газа и угля.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 602 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 67 KiB

View File

@ -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()

File diff suppressed because it is too large Load Diff

View File

@ -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 страной в определённый год более точно
и лучше всего соответствовует данному набору данных из двух потенциальных моделей.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

View File

@ -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)

File diff suppressed because it is too large Load Diff

View File

@ -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)
### Вывод:
Точность работы модели на выбранных данных достаточно низкая, модель не справилась со своей задачей, возможно,
другие методы могут выдать лучшие результаты, либо необходима модификация модели.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 125 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

View File

@ -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()

View File

@ -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)
### Вывод:
Программа способна сгенерировать осмысленный текст в каждом из случаев.

View File

@ -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 Pushkins 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.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 103 KiB

View File

@ -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)

View File

@ -1,7 +0,0 @@
Тучу передернуло синим пламенем. Медленно загремел гром.
Он то усиливался, то почти затихал. И дождь, подчиняясь грому, начал временами идти сильнее и широко шуметь по листве, потом останавливался.
Вскоре сквозь тучи пробилось солнце. Старый пушкинский парк в Михайловском и крутые берега Сороти запылали рыжей глиной и мокрой травой.
Стройная радуга зажглась нал пасмурной далью. Она сверкала и дымилась, окруженная космами пепельных туч.
Радуга была похожа на арку, воздвигнутую на границе заповедной земли. С особенной силой здесь, в пушкинских местах, возникали мысли о русском языке.
Здесь Пушкин бродил с непокрытой головой, со спутанными осенним ветром холодными волосами, слушал влажный гул сосновых вершин, смотрел, прищурившись,
откуда несутся осенние тучи, толкался по ярмаркам. Здесь чудесные слова переполняли его, стесняли его душу и, наконец, слагались по огрызком гусиного пера в звенящие строфы.

View File

@ -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 "Важность признаков")

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

View File

@ -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}')

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

File diff suppressed because it is too large Load Diff

View File

@ -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 подходит для решения поставленной задачи.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

View File

@ -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}")

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

File diff suppressed because it is too large Load Diff

View File

@ -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, тем лучше модель объясняет изменчивость целевой переменной.

View File

@ -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}')

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

File diff suppressed because it is too large Load Diff

View File

@ -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 показала хороший
результат, но обычная регрессия с поставленной задачей справилась лучше - нет смысла использовать более "тяжелый"
алгоритм, если он не дает значительного выигрыша в качестве.

View File

@ -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}')

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

View File

@ -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.

View File

@ -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

View File

@ -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)

View File

@ -1,9 +0,0 @@
Когда человек сознательно или интуитивно выбирает себе в жизни какую-то цель, жизненную задачу, он невольно дает себе оценку. По тому, ради чего человек живет, можно судить и о его самооценке - низкой или высокой.
Если человек живет, чтобы приносить людям добро, облегчать их страдания, давать людям радость, то он оценивает себя на уровне этой своей человечности. Он ставит себе цель, достойную человека.
Только такая цель позволяет человеку прожить свою жизнь с достоинством и получить настоящую радость. Да, радость! Подумайте: если человек ставит себе задачей увеличивать в жизни добро, приносить людям счастье, какие неудачи могут его постигнуть? Не тому помочь? Но много ли людей не нуждаются в помощи?
Если жить только для себя, своими мелкими заботами о собственном благополучии, то от прожитого не останется и следа. Если же жить для других, то другие сберегут то, чему служил, чему отдавал силы.
Можно по-разному определять цель своего существования, но цель должна быть. Надо иметь и принципы в жизни. Одно правило в жизни должно быть у каждого человека, в его цели жизни, в его принципах жизни, в его поведении: надо прожить жизнь с достоинством, чтобы не стыдно было вспоминать.
Достоинство требует доброты, великодушия, умения не быть эгоистом, быть правдивым, хорошим другом, находить радость в помощи другим.
Ради достоинства жизни надо уметь отказываться от мелких удовольствий и немалых тоже… Уметь извиняться, признавать перед другими ошибку - лучше, чем врать.
Обманывая, человек прежде всего обманывает самого себя, ибо он думает, что успешно соврал, а люди поняли и из деликатности промолчали.
Жизнь - прежде всего творчество, но это не значит, что каждый человек, чтобы жить, должен родиться художником, балериной или ученым. Можно творить просто добрую атмосферу вокруг себя. Человек может принести с собой атмосферу подозрительности, какого-то тягостного молчания, а может внести сразу радость, свет. Вот это и есть творчество.

View File

@ -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

View File

@ -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()

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

View File

@ -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

View File

@ -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}")

View File

@ -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' - наименьшее.

View File

@ -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
1 work_year experience_level employment_type job_title salary salary_currency salary_in_usd employee_residence remote_ratio company_location company_size
2 0 2020 MI FT Data Scientist 70000 EUR 79833 DE 0 DE L
3 1 2020 SE FT Machine Learning Scientist 260000 USD 260000 JP 0 JP S
4 2 2020 SE FT Big Data Engineer 85000 GBP 109024 GB 50 GB M
5 3 2020 MI FT Product Data Analyst 20000 USD 20000 HN 0 HN S
6 4 2020 SE FT Machine Learning Engineer 150000 USD 150000 US 50 US L
7 5 2020 EN FT Data Analyst 72000 USD 72000 US 100 US L
8 6 2020 SE FT Lead Data Scientist 190000 USD 190000 US 100 US S
9 7 2020 MI FT Data Scientist 11000000 HUF 35735 HU 50 HU L
10 8 2020 MI FT Business Data Analyst 135000 USD 135000 US 100 US L
11 9 2020 SE FT Lead Data Engineer 125000 USD 125000 NZ 50 NZ S
12 10 2020 EN FT Data Scientist 45000 EUR 51321 FR 0 FR S
13 11 2020 MI FT Data Scientist 3000000 INR 40481 IN 0 IN L
14 12 2020 EN FT Data Scientist 35000 EUR 39916 FR 0 FR M
15 13 2020 MI FT Lead Data Analyst 87000 USD 87000 US 100 US L
16 14 2020 MI FT Data Analyst 85000 USD 85000 US 100 US L
17 15 2020 MI FT Data Analyst 8000 USD 8000 PK 50 PK L
18 16 2020 EN FT Data Engineer 4450000 JPY 41689 JP 100 JP S
19 17 2020 SE FT Big Data Engineer 100000 EUR 114047 PL 100 GB S
20 18 2020 EN FT Data Science Consultant 423000 INR 5707 IN 50 IN M
21 19 2020 MI FT Lead Data Engineer 56000 USD 56000 PT 100 US M
22 20 2020 MI FT Machine Learning Engineer 299000 CNY 43331 CN 0 CN M
23 21 2020 MI FT Product Data Analyst 450000 INR 6072 IN 100 IN L
24 22 2020 SE FT Data Engineer 42000 EUR 47899 GR 50 GR L
25 23 2020 MI FT BI Data Analyst 98000 USD 98000 US 0 US M
26 24 2020 MI FT Lead Data Scientist 115000 USD 115000 AE 0 AE L
27 25 2020 EX FT Director of Data Science 325000 USD 325000 US 100 US L
28 26 2020 EN FT Research Scientist 42000 USD 42000 NL 50 NL L
29 27 2020 SE FT Data Engineer 720000 MXN 33511 MX 0 MX S
30 28 2020 EN CT Business Data Analyst 100000 USD 100000 US 100 US L
31 29 2020 SE FT Machine Learning Manager 157000 CAD 117104 CA 50 CA L
32 30 2020 MI FT Data Engineering Manager 51999 EUR 59303 DE 100 DE S
33 31 2020 EN FT Big Data Engineer 70000 USD 70000 US 100 US L
34 32 2020 SE FT Data Scientist 60000 EUR 68428 GR 100 US L
35 33 2020 MI FT Research Scientist 450000 USD 450000 US 0 US M
36 34 2020 MI FT Data Analyst 41000 EUR 46759 FR 50 FR L
37 35 2020 MI FT Data Engineer 65000 EUR 74130 AT 50 AT L
38 36 2020 MI FT Data Science Consultant 103000 USD 103000 US 100 US L
39 37 2020 EN FT Machine Learning Engineer 250000 USD 250000 US 50 US L
40 38 2020 EN FT Data Analyst 10000 USD 10000 NG 100 NG S
41 39 2020 EN FT Machine Learning Engineer 138000 USD 138000 US 100 US S
42 40 2020 MI FT Data Scientist 45760 USD 45760 PH 100 US S
43 41 2020 EX FT Data Engineering Manager 70000 EUR 79833 ES 50 ES L
44 42 2020 MI FT Machine Learning Infrastructure Engineer 44000 EUR 50180 PT 0 PT M
45 43 2020 MI FT Data Engineer 106000 USD 106000 US 100 US L
46 44 2020 MI FT Data Engineer 88000 GBP 112872 GB 50 GB L
47 45 2020 EN PT ML Engineer 14000 EUR 15966 DE 100 DE S
48 46 2020 MI FT Data Scientist 60000 GBP 76958 GB 100 GB S
49 47 2020 SE FT Data Engineer 188000 USD 188000 US 100 US L
50 48 2020 MI FT Data Scientist 105000 USD 105000 US 100 US L
51 49 2020 MI FT Data Engineer 61500 EUR 70139 FR 50 FR L
52 50 2020 EN FT Data Analyst 450000 INR 6072 IN 0 IN S
53 51 2020 EN FT Data Analyst 91000 USD 91000 US 100 US L
54 52 2020 EN FT AI Scientist 300000 DKK 45896 DK 50 DK S
55 53 2020 EN FT Data Engineer 48000 EUR 54742 PK 100 DE L
56 54 2020 SE FL Computer Vision Engineer 60000 USD 60000 RU 100 US S
57 55 2020 SE FT Principal Data Scientist 130000 EUR 148261 DE 100 DE M
58 56 2020 MI FT Data Scientist 34000 EUR 38776 ES 100 ES M
59 57 2020 MI FT Data Scientist 118000 USD 118000 US 100 US M
60 58 2020 SE FT Data Scientist 120000 USD 120000 US 50 US L
61 59 2020 MI FT Data Scientist 138350 USD 138350 US 100 US M
62 60 2020 MI FT Data Engineer 110000 USD 110000 US 100 US L
63 61 2020 MI FT Data Engineer 130800 USD 130800 ES 100 US M
64 62 2020 EN PT Data Scientist 19000 EUR 21669 IT 50 IT S
65 63 2020 SE FT Data Scientist 412000 USD 412000 US 100 US L
66 64 2020 SE FT Machine Learning Engineer 40000 EUR 45618 HR 100 HR S
67 65 2020 EN FT Data Scientist 55000 EUR 62726 DE 50 DE S
68 66 2020 EN FT Data Scientist 43200 EUR 49268 DE 0 DE S
69 67 2020 SE FT Data Science Manager 190200 USD 190200 US 100 US M
70 68 2020 EN FT Data Scientist 105000 USD 105000 US 100 US S
71 69 2020 SE FT Data Scientist 80000 EUR 91237 AT 0 AT S
72 70 2020 MI FT Data Scientist 55000 EUR 62726 FR 50 LU S
73 71 2020 MI FT Data Scientist 37000 EUR 42197 FR 50 FR S
74 72 2021 EN FT Research Scientist 60000 GBP 82528 GB 50 GB L
75 73 2021 EX FT BI Data Analyst 150000 USD 150000 IN 100 US L
76 74 2021 EX FT Head of Data 235000 USD 235000 US 100 US L
77 75 2021 SE FT Data Scientist 45000 EUR 53192 FR 50 FR L
78 76 2021 MI FT BI Data Analyst 100000 USD 100000 US 100 US M
79 77 2021 MI PT 3D Computer Vision Researcher 400000 INR 5409 IN 50 IN M
80 78 2021 MI CT ML Engineer 270000 USD 270000 US 100 US L
81 79 2021 EN FT Data Analyst 80000 USD 80000 US 100 US M
82 80 2021 SE FT Data Analytics Engineer 67000 EUR 79197 DE 100 DE L
83 81 2021 MI FT Data Engineer 140000 USD 140000 US 100 US L
84 82 2021 MI FT Applied Data Scientist 68000 CAD 54238 GB 50 CA L
85 83 2021 MI FT Machine Learning Engineer 40000 EUR 47282 ES 100 ES S
86 84 2021 EX FT Director of Data Science 130000 EUR 153667 IT 100 PL L
87 85 2021 MI FT Data Engineer 110000 PLN 28476 PL 100 PL L
88 86 2021 EN FT Data Analyst 50000 EUR 59102 FR 50 FR M
89 87 2021 MI FT Data Analytics Engineer 110000 USD 110000 US 100 US L
90 88 2021 SE FT Lead Data Analyst 170000 USD 170000 US 100 US L
91 89 2021 SE FT Data Analyst 80000 USD 80000 BG 100 US S
92 90 2021 SE FT Marketing Data Analyst 75000 EUR 88654 GR 100 DK L
93 91 2021 EN FT Data Science Consultant 65000 EUR 76833 DE 100 DE S
94 92 2021 MI FT Lead Data Analyst 1450000 INR 19609 IN 100 IN L
95 93 2021 SE FT Lead Data Engineer 276000 USD 276000 US 0 US L
96 94 2021 EN FT Data Scientist 2200000 INR 29751 IN 50 IN L
97 95 2021 MI FT Cloud Data Engineer 120000 SGD 89294 SG 50 SG L
98 96 2021 EN PT AI Scientist 12000 USD 12000 BR 100 US S
99 97 2021 MI FT Financial Data Analyst 450000 USD 450000 US 100 US L
100 98 2021 EN FT Computer Vision Software Engineer 70000 USD 70000 US 100 US M
101 99 2021 MI FT Computer Vision Software Engineer 81000 EUR 95746 DE 100 US S
102 100 2021 MI FT Data Analyst 75000 USD 75000 US 0 US L
103 101 2021 SE FT Data Engineer 150000 USD 150000 US 100 US L
104 102 2021 MI FT BI Data Analyst 11000000 HUF 36259 HU 50 US L
105 103 2021 MI FT Data Analyst 62000 USD 62000 US 0 US L
106 104 2021 MI FT Data Scientist 73000 USD 73000 US 0 US L
107 105 2021 MI FT Data Analyst 37456 GBP 51519 GB 50 GB L
108 106 2021 MI FT Research Scientist 235000 CAD 187442 CA 100 CA L
109 107 2021 SE FT Data Engineer 115000 USD 115000 US 100 US S
110 108 2021 SE FT Data Engineer 150000 USD 150000 US 100 US M
111 109 2021 EN FT Data Engineer 2250000 INR 30428 IN 100 IN L
112 110 2021 SE FT Machine Learning Engineer 80000 EUR 94564 DE 50 DE L
113 111 2021 SE FT Director of Data Engineering 82500 GBP 113476 GB 100 GB M
114 112 2021 SE FT Lead Data Engineer 75000 GBP 103160 GB 100 GB S
115 113 2021 EN PT AI Scientist 12000 USD 12000 PK 100 US M
116 114 2021 MI FT Data Engineer 38400 EUR 45391 NL 100 NL L
117 115 2021 EN FT Machine Learning Scientist 225000 USD 225000 US 100 US L
118 116 2021 MI FT Data Scientist 50000 USD 50000 NG 100 NG L
119 117 2021 MI FT Data Science Engineer 34000 EUR 40189 GR 100 GR M
120 118 2021 EN FT Data Analyst 90000 USD 90000 US 100 US S
121 119 2021 MI FT Data Engineer 200000 USD 200000 US 100 US L
122 120 2021 MI FT Big Data Engineer 60000 USD 60000 ES 50 RO M
123 121 2021 SE FT Principal Data Engineer 200000 USD 200000 US 100 US M
124 122 2021 EN FT Data Analyst 50000 USD 50000 US 100 US M
125 123 2021 EN FT Applied Data Scientist 80000 GBP 110037 GB 0 GB L
126 124 2021 EN PT Data Analyst 8760 EUR 10354 ES 50 ES M
127 125 2021 MI FT Principal Data Scientist 151000 USD 151000 US 100 US L
128 126 2021 SE FT Machine Learning Scientist 120000 USD 120000 US 50 US S
129 127 2021 MI FT Data Scientist 700000 INR 9466 IN 0 IN S
130 128 2021 EN FT Machine Learning Engineer 20000 USD 20000 IN 100 IN S
131 129 2021 SE FT Lead Data Scientist 3000000 INR 40570 IN 50 IN L
132 130 2021 EN FT Machine Learning Developer 100000 USD 100000 IQ 50 IQ S
133 131 2021 EN FT Data Scientist 42000 EUR 49646 FR 50 FR M
134 132 2021 MI FT Applied Machine Learning Scientist 38400 USD 38400 VN 100 US M
135 133 2021 SE FT Computer Vision Engineer 24000 USD 24000 BR 100 BR M
136 134 2021 EN FT Data Scientist 100000 USD 100000 US 0 US S
137 135 2021 MI FT Data Analyst 90000 USD 90000 US 100 US M
138 136 2021 MI FT ML Engineer 7000000 JPY 63711 JP 50 JP S
139 137 2021 MI FT ML Engineer 8500000 JPY 77364 JP 50 JP S
140 138 2021 SE FT Principal Data Scientist 220000 USD 220000 US 0 US L
141 139 2021 EN FT Data Scientist 80000 USD 80000 US 100 US M
142 140 2021 MI FT Data Analyst 135000 USD 135000 US 100 US L
143 141 2021 SE FT Data Science Manager 240000 USD 240000 US 0 US L
144 142 2021 SE FT Data Engineering Manager 150000 USD 150000 US 0 US L
145 143 2021 MI FT Data Scientist 82500 USD 82500 US 100 US S
146 144 2021 MI FT Data Engineer 100000 USD 100000 US 100 US L
147 145 2021 SE FT Machine Learning Engineer 70000 EUR 82744 BE 50 BE M
148 146 2021 MI FT Research Scientist 53000 EUR 62649 FR 50 FR M
149 147 2021 MI FT Data Engineer 90000 USD 90000 US 100 US L
150 148 2021 SE FT Data Engineering Manager 153000 USD 153000 US 100 US L
151 149 2021 SE FT Cloud Data Engineer 160000 USD 160000 BR 100 US S
152 150 2021 SE FT Director of Data Science 168000 USD 168000 JP 0 JP S
153 151 2021 MI FT Data Scientist 150000 USD 150000 US 100 US M
154 152 2021 MI FT Data Scientist 95000 CAD 75774 CA 100 CA L
155 153 2021 EN FT Data Scientist 13400 USD 13400 UA 100 UA L
156 154 2021 SE FT Data Science Manager 144000 USD 144000 US 100 US L
157 155 2021 SE FT Data Science Engineer 159500 CAD 127221 CA 50 CA L
158 156 2021 MI FT Data Scientist 160000 SGD 119059 SG 100 IL M
159 157 2021 MI FT Applied Machine Learning Scientist 423000 USD 423000 US 50 US L
160 158 2021 SE FT Data Analytics Manager 120000 USD 120000 US 100 US M
161 159 2021 EN FT Machine Learning Engineer 125000 USD 125000 US 100 US S
162 160 2021 EX FT Head of Data 230000 USD 230000 RU 50 RU L
163 161 2021 EX FT Head of Data Science 85000 USD 85000 RU 0 RU M
164 162 2021 MI FT Data Engineer 24000 EUR 28369 MT 50 MT L
165 163 2021 EN FT Data Science Consultant 54000 EUR 63831 DE 50 DE L
166 164 2021 EX FT Director of Data Science 110000 EUR 130026 DE 50 DE M
167 165 2021 SE FT Data Specialist 165000 USD 165000 US 100 US L
168 166 2021 EN FT Data Engineer 80000 USD 80000 US 100 US L
169 167 2021 EX FT Director of Data Science 250000 USD 250000 US 0 US L
170 168 2021 EN FT BI Data Analyst 55000 USD 55000 US 50 US S
171 169 2021 MI FT Data Architect 150000 USD 150000 US 100 US L
172 170 2021 MI FT Data Architect 170000 USD 170000 US 100 US L
173 171 2021 MI FT Data Engineer 60000 GBP 82528 GB 100 GB L
174 172 2021 EN FT Data Analyst 60000 USD 60000 US 100 US S
175 173 2021 SE FT Principal Data Scientist 235000 USD 235000 US 100 US L
176 174 2021 SE FT Research Scientist 51400 EUR 60757 PT 50 PT L
177 175 2021 SE FT Data Engineering Manager 174000 USD 174000 US 100 US L
178 176 2021 MI FT Data Scientist 58000 MXN 2859 MX 0 MX S
179 177 2021 MI FT Data Scientist 30400000 CLP 40038 CL 100 CL L
180 178 2021 EN FT Machine Learning Engineer 81000 USD 81000 US 50 US S
181 179 2021 MI FT Data Scientist 420000 INR 5679 IN 100 US S
182 180 2021 MI FT Big Data Engineer 1672000 INR 22611 IN 0 IN L
183 181 2021 MI FT Data Scientist 76760 EUR 90734 DE 50 DE L
184 182 2021 MI FT Data Engineer 22000 EUR 26005 RO 0 US L
185 183 2021 SE FT Finance Data Analyst 45000 GBP 61896 GB 50 GB L
186 184 2021 MI FL Machine Learning Scientist 12000 USD 12000 PK 50 PK M
187 185 2021 MI FT Data Engineer 4000 USD 4000 IR 100 IR M
188 186 2021 SE FT Data Analytics Engineer 50000 USD 50000 VN 100 GB M
189 187 2021 EX FT Data Science Consultant 59000 EUR 69741 FR 100 ES S
190 188 2021 SE FT Data Engineer 65000 EUR 76833 RO 50 GB S
191 189 2021 MI FT Machine Learning Engineer 74000 USD 74000 JP 50 JP S
192 190 2021 SE FT Data Science Manager 152000 USD 152000 US 100 FR L
193 191 2021 EN FT Machine Learning Engineer 21844 USD 21844 CO 50 CO M
194 192 2021 MI FT Big Data Engineer 18000 USD 18000 MD 0 MD S
195 193 2021 SE FT Data Science Manager 174000 USD 174000 US 100 US L
196 194 2021 SE FT Research Scientist 120500 CAD 96113 CA 50 CA L
197 195 2021 MI FT Data Scientist 147000 USD 147000 US 50 US L
198 196 2021 EN FT BI Data Analyst 9272 USD 9272 KE 100 KE S
199 197 2021 SE FT Machine Learning Engineer 1799997 INR 24342 IN 100 IN L
200 198 2021 SE FT Data Science Manager 4000000 INR 54094 IN 50 US L
201 199 2021 EN FT Data Science Consultant 90000 USD 90000 US 100 US S
202 200 2021 MI FT Data Scientist 52000 EUR 61467 DE 50 AT M
203 201 2021 SE FT Machine Learning Infrastructure Engineer 195000 USD 195000 US 100 US M
204 202 2021 MI FT Data Scientist 32000 EUR 37825 ES 100 ES L
205 203 2021 SE FT Research Scientist 50000 USD 50000 FR 100 US S
206 204 2021 MI FT Data Scientist 160000 USD 160000 US 100 US L
207 205 2021 MI FT Data Scientist 69600 BRL 12901 BR 0 BR S
208 206 2021 SE FT Machine Learning Engineer 200000 USD 200000 US 100 US L
209 207 2021 SE FT Data Engineer 165000 USD 165000 US 0 US M
210 208 2021 MI FL Data Engineer 20000 USD 20000 IT 0 US L
211 209 2021 SE FT Data Analytics Manager 120000 USD 120000 US 0 US L
212 210 2021 MI FT Machine Learning Engineer 21000 EUR 24823 SI 50 SI L
213 211 2021 MI FT Research Scientist 48000 EUR 56738 FR 50 FR S
214 212 2021 MI FT Data Engineer 48000 GBP 66022 HK 50 GB S
215 213 2021 EN FT Big Data Engineer 435000 INR 5882 IN 0 CH L
216 214 2021 EN FT Machine Learning Engineer 21000 EUR 24823 DE 50 DE M
217 215 2021 SE FT Principal Data Engineer 185000 USD 185000 US 100 US L
218 216 2021 EN PT Computer Vision Engineer 180000 DKK 28609 DK 50 DK S
219 217 2021 MI FT Data Scientist 76760 EUR 90734 DE 50 DE L
220 218 2021 MI FT Machine Learning Engineer 75000 EUR 88654 BE 100 BE M
221 219 2021 SE FT Data Analytics Manager 140000 USD 140000 US 100 US L
222 220 2021 MI FT Machine Learning Engineer 180000 PLN 46597 PL 100 PL L
223 221 2021 MI FT Data Scientist 85000 GBP 116914 GB 50 GB L
224 222 2021 MI FT Data Scientist 2500000 INR 33808 IN 0 IN M
225 223 2021 MI FT Data Scientist 40900 GBP 56256 GB 50 GB L
226 224 2021 SE FT Machine Learning Scientist 225000 USD 225000 US 100 CA L
227 225 2021 EX CT Principal Data Scientist 416000 USD 416000 US 100 US S
228 226 2021 SE FT Data Scientist 110000 CAD 87738 CA 100 CA S
229 227 2021 MI FT Data Scientist 75000 EUR 88654 DE 50 DE L
230 228 2021 SE FT Data Scientist 135000 USD 135000 US 0 US L
231 229 2021 SE FT Data Analyst 90000 CAD 71786 CA 100 CA M
232 230 2021 EN FT Big Data Engineer 1200000 INR 16228 IN 100 IN L
233 231 2021 SE FT ML Engineer 256000 USD 256000 US 100 US S
234 232 2021 SE FT Director of Data Engineering 200000 USD 200000 US 100 US L
235 233 2021 SE FT Data Analyst 200000 USD 200000 US 100 US L
236 234 2021 MI FT Data Architect 180000 USD 180000 US 100 US L
237 235 2021 MI FT Head of Data Science 110000 USD 110000 US 0 US S
238 236 2021 MI FT Research Scientist 80000 CAD 63810 CA 100 CA M
239 237 2021 MI FT Data Scientist 39600 EUR 46809 ES 100 ES M
240 238 2021 EN FT Data Scientist 4000 USD 4000 VN 0 VN M
241 239 2021 EN FT Data Engineer 1600000 INR 21637 IN 50 IN M
242 240 2021 SE FT Data Scientist 130000 CAD 103691 CA 100 CA L
243 241 2021 MI FT Data Analyst 80000 USD 80000 US 100 US L
244 242 2021 MI FT Data Engineer 110000 USD 110000 US 100 US L
245 243 2021 SE FT Data Scientist 165000 USD 165000 US 100 US L
246 244 2021 EN FT AI Scientist 1335000 INR 18053 IN 100 AS S
247 245 2021 MI FT Data Engineer 52500 GBP 72212 GB 50 GB L
248 246 2021 EN FT Data Scientist 31000 EUR 36643 FR 50 FR L
249 247 2021 MI FT Data Engineer 108000 TRY 12103 TR 0 TR M
250 248 2021 SE FT Data Engineer 70000 GBP 96282 GB 50 GB L
251 249 2021 SE FT Principal Data Analyst 170000 USD 170000 US 100 US M
252 250 2021 MI FT Data Scientist 115000 USD 115000 US 50 US L
253 251 2021 EN FT Data Scientist 90000 USD 90000 US 100 US S
254 252 2021 EX FT Principal Data Engineer 600000 USD 600000 US 100 US L
255 253 2021 EN FT Data Scientist 2100000 INR 28399 IN 100 IN M
256 254 2021 MI FT Data Analyst 93000 USD 93000 US 100 US L
257 255 2021 SE FT Big Data Architect 125000 CAD 99703 CA 50 CA M
258 256 2021 MI FT Data Engineer 200000 USD 200000 US 100 US L
259 257 2021 SE FT Principal Data Scientist 147000 EUR 173762 DE 100 DE M
260 258 2021 SE FT Machine Learning Engineer 185000 USD 185000 US 50 US L
261 259 2021 EX FT Director of Data Science 120000 EUR 141846 DE 0 DE L
262 260 2021 MI FT Data Scientist 130000 USD 130000 US 50 US L
263 261 2021 SE FT Data Analyst 54000 EUR 63831 DE 50 DE L
264 262 2021 MI FT Data Scientist 1250000 INR 16904 IN 100 IN S
265 263 2021 SE FT Machine Learning Engineer 4900000 INR 66265 IN 0 IN L
266 264 2021 MI FT Data Scientist 21600 EUR 25532 RS 100 DE S
267 265 2021 SE FT Lead Data Engineer 160000 USD 160000 PR 50 US S
268 266 2021 MI FT Data Engineer 93150 USD 93150 US 0 US M
269 267 2021 MI FT Data Engineer 111775 USD 111775 US 0 US M
270 268 2021 MI FT Data Engineer 250000 TRY 28016 TR 100 TR M
271 269 2021 EN FT Data Engineer 55000 EUR 65013 DE 50 DE M
272 270 2021 EN FT Data Engineer 72500 USD 72500 US 100 US L
273 271 2021 SE FT Computer Vision Engineer 102000 BRL 18907 BR 0 BR M
274 272 2021 EN FT Data Science Consultant 65000 EUR 76833 DE 0 DE L
275 273 2021 EN FT Machine Learning Engineer 85000 USD 85000 NL 100 DE S
276 274 2021 SE FT Data Scientist 65720 EUR 77684 FR 50 FR M
277 275 2021 EN FT Data Scientist 100000 USD 100000 US 100 US M
278 276 2021 EN FT Data Scientist 58000 USD 58000 US 50 US L
279 277 2021 SE FT AI Scientist 55000 USD 55000 ES 100 ES L
280 278 2021 SE FT Data Scientist 180000 TRY 20171 TR 50 TR L
281 279 2021 EN FT Business Data Analyst 50000 EUR 59102 LU 100 LU L
282 280 2021 MI FT Data Engineer 112000 USD 112000 US 100 US L
283 281 2021 EN FT Research Scientist 100000 USD 100000 JE 0 CN L
284 282 2021 MI PT Data Engineer 59000 EUR 69741 NL 100 NL L
285 283 2021 SE CT Staff Data Scientist 105000 USD 105000 US 100 US M
286 284 2021 MI FT Research Scientist 69999 USD 69999 CZ 50 CZ L
287 285 2021 SE FT Data Science Manager 7000000 INR 94665 IN 50 IN L
288 286 2021 SE FT Head of Data 87000 EUR 102839 SI 100 SI L
289 287 2021 MI FT Data Scientist 109000 USD 109000 US 50 US L
290 288 2021 MI FT Machine Learning Engineer 43200 EUR 51064 IT 50 IT L
291 289 2022 SE FT Data Engineer 135000 USD 135000 US 100 US M
292 290 2022 SE FT Data Analyst 155000 USD 155000 US 100 US M
293 291 2022 SE FT Data Analyst 120600 USD 120600 US 100 US M
294 292 2022 MI FT Data Scientist 130000 USD 130000 US 0 US M
295 293 2022 MI FT Data Scientist 90000 USD 90000 US 0 US M
296 294 2022 MI FT Data Engineer 170000 USD 170000 US 100 US M
297 295 2022 MI FT Data Engineer 150000 USD 150000 US 100 US M
298 296 2022 SE FT Data Analyst 102100 USD 102100 US 100 US M
299 297 2022 SE FT Data Analyst 84900 USD 84900 US 100 US M
300 298 2022 SE FT Data Scientist 136620 USD 136620 US 100 US M
301 299 2022 SE FT Data Scientist 99360 USD 99360 US 100 US M
302 300 2022 SE FT Data Scientist 90000 GBP 117789 GB 0 GB M
303 301 2022 SE FT Data Scientist 80000 GBP 104702 GB 0 GB M
304 302 2022 SE FT Data Scientist 146000 USD 146000 US 100 US M
305 303 2022 SE FT Data Scientist 123000 USD 123000 US 100 US M
306 304 2022 EN FT Data Engineer 40000 GBP 52351 GB 100 GB M
307 305 2022 SE FT Data Analyst 99000 USD 99000 US 0 US M
308 306 2022 SE FT Data Analyst 116000 USD 116000 US 0 US M
309 307 2022 MI FT Data Analyst 106260 USD 106260 US 0 US M
310 308 2022 MI FT Data Analyst 126500 USD 126500 US 0 US M
311 309 2022 EX FT Data Engineer 242000 USD 242000 US 100 US M
312 310 2022 EX FT Data Engineer 200000 USD 200000 US 100 US M
313 311 2022 MI FT Data Scientist 50000 GBP 65438 GB 0 GB M
314 312 2022 MI FT Data Scientist 30000 GBP 39263 GB 0 GB M
315 313 2022 MI FT Data Engineer 60000 GBP 78526 GB 0 GB M
316 314 2022 MI FT Data Engineer 40000 GBP 52351 GB 0 GB M
317 315 2022 SE FT Data Scientist 165220 USD 165220 US 100 US M
318 316 2022 EN FT Data Engineer 35000 GBP 45807 GB 100 GB M
319 317 2022 SE FT Data Scientist 120160 USD 120160 US 100 US M
320 318 2022 SE FT Data Analyst 90320 USD 90320 US 100 US M
321 319 2022 SE FT Data Engineer 181940 USD 181940 US 0 US M
322 320 2022 SE FT Data Engineer 132320 USD 132320 US 0 US M
323 321 2022 SE FT Data Engineer 220110 USD 220110 US 0 US M
324 322 2022 SE FT Data Engineer 160080 USD 160080 US 0 US M
325 323 2022 SE FT Data Scientist 180000 USD 180000 US 0 US L
326 324 2022 SE FT Data Scientist 120000 USD 120000 US 0 US L
327 325 2022 SE FT Data Analyst 124190 USD 124190 US 100 US M
328 326 2022 EX FT Data Analyst 130000 USD 130000 US 100 US M
329 327 2022 EX FT Data Analyst 110000 USD 110000 US 100 US M
330 328 2022 SE FT Data Analyst 170000 USD 170000 US 100 US M
331 329 2022 MI FT Data Analyst 115500 USD 115500 US 100 US M
332 330 2022 SE FT Data Analyst 112900 USD 112900 US 100 US M
333 331 2022 SE FT Data Analyst 90320 USD 90320 US 100 US M
334 332 2022 SE FT Data Analyst 112900 USD 112900 US 100 US M
335 333 2022 SE FT Data Analyst 90320 USD 90320 US 100 US M
336 334 2022 SE FT Data Engineer 165400 USD 165400 US 100 US M
337 335 2022 SE FT Data Engineer 132320 USD 132320 US 100 US M
338 336 2022 MI FT Data Analyst 167000 USD 167000 US 100 US M
339 337 2022 SE FT Data Engineer 243900 USD 243900 US 100 US M
340 338 2022 SE FT Data Analyst 136600 USD 136600 US 100 US M
341 339 2022 SE FT Data Analyst 109280 USD 109280 US 100 US M
342 340 2022 SE FT Data Engineer 128875 USD 128875 US 100 US M
343 341 2022 SE FT Data Engineer 93700 USD 93700 US 100 US M
344 342 2022 EX FT Head of Data Science 224000 USD 224000 US 100 US M
345 343 2022 EX FT Head of Data Science 167875 USD 167875 US 100 US M
346 344 2022 EX FT Analytics Engineer 175000 USD 175000 US 100 US M
347 345 2022 SE FT Data Engineer 156600 USD 156600 US 100 US M
348 346 2022 SE FT Data Engineer 108800 USD 108800 US 0 US M
349 347 2022 SE FT Data Scientist 95550 USD 95550 US 0 US M
350 348 2022 SE FT Data Engineer 113000 USD 113000 US 0 US L
351 349 2022 SE FT Data Analyst 135000 USD 135000 US 100 US M
352 350 2022 SE FT Data Science Manager 161342 USD 161342 US 100 US M
353 351 2022 SE FT Data Science Manager 137141 USD 137141 US 100 US M
354 352 2022 SE FT Data Scientist 167000 USD 167000 US 100 US M
355 353 2022 SE FT Data Scientist 123000 USD 123000 US 100 US M
356 354 2022 SE FT Data Engineer 60000 GBP 78526 GB 0 GB M
357 355 2022 SE FT Data Engineer 50000 GBP 65438 GB 0 GB M
358 356 2022 SE FT Data Scientist 150000 USD 150000 US 0 US M
359 357 2022 SE FT Data Scientist 211500 USD 211500 US 100 US M
360 358 2022 SE FT Data Architect 192400 USD 192400 CA 100 CA M
361 359 2022 SE FT Data Architect 90700 USD 90700 CA 100 CA M
362 360 2022 SE FT Data Analyst 130000 USD 130000 CA 100 CA M
363 361 2022 SE FT Data Analyst 61300 USD 61300 CA 100 CA M
364 362 2022 SE FT Data Analyst 130000 USD 130000 CA 100 CA M
365 363 2022 SE FT Data Analyst 61300 USD 61300 CA 100 CA M
366 364 2022 SE FT Data Engineer 160000 USD 160000 US 0 US L
367 365 2022 SE FT Data Scientist 138600 USD 138600 US 100 US M
368 366 2022 SE FT Data Engineer 136000 USD 136000 US 0 US M
369 367 2022 MI FT Data Analyst 58000 USD 58000 US 0 US S
370 368 2022 EX FT Analytics Engineer 135000 USD 135000 US 100 US M
371 369 2022 SE FT Data Scientist 170000 USD 170000 US 100 US M
372 370 2022 SE FT Data Scientist 123000 USD 123000 US 100 US M
373 371 2022 SE FT Machine Learning Engineer 189650 USD 189650 US 0 US M
374 372 2022 SE FT Machine Learning Engineer 164996 USD 164996 US 0 US M
375 373 2022 MI FT ETL Developer 50000 EUR 54957 GR 0 GR M
376 374 2022 MI FT ETL Developer 50000 EUR 54957 GR 0 GR M
377 375 2022 EX FT Lead Data Engineer 150000 CAD 118187 CA 100 CA S
378 376 2022 SE FT Data Analyst 132000 USD 132000 US 0 US M
379 377 2022 SE FT Data Engineer 165400 USD 165400 US 100 US M
380 378 2022 SE FT Data Architect 208775 USD 208775 US 100 US M
381 379 2022 SE FT Data Architect 147800 USD 147800 US 100 US M
382 380 2022 SE FT Data Engineer 136994 USD 136994 US 100 US M
383 381 2022 SE FT Data Engineer 101570 USD 101570 US 100 US M
384 382 2022 SE FT Data Analyst 128875 USD 128875 US 100 US M
385 383 2022 SE FT Data Analyst 93700 USD 93700 US 100 US M
386 384 2022 EX FT Head of Machine Learning 6000000 INR 79039 IN 50 IN L
387 385 2022 SE FT Data Engineer 132320 USD 132320 US 100 US M
388 386 2022 EN FT Machine Learning Engineer 28500 GBP 37300 GB 100 GB L
389 387 2022 SE FT Data Analyst 164000 USD 164000 US 0 US M
390 388 2022 SE FT Data Engineer 155000 USD 155000 US 100 US M
391 389 2022 MI FT Machine Learning Engineer 95000 GBP 124333 GB 0 GB M
392 390 2022 MI FT Machine Learning Engineer 75000 GBP 98158 GB 0 GB M
393 391 2022 MI FT AI Scientist 120000 USD 120000 US 0 US M
394 392 2022 SE FT Data Analyst 112900 USD 112900 US 100 US M
395 393 2022 SE FT Data Analyst 90320 USD 90320 US 100 US M
396 394 2022 SE FT Data Analytics Manager 145000 USD 145000 US 100 US M
397 395 2022 SE FT Data Analytics Manager 105400 USD 105400 US 100 US M
398 396 2022 MI FT Machine Learning Engineer 80000 EUR 87932 FR 100 DE M
399 397 2022 MI FT Data Engineer 90000 GBP 117789 GB 0 GB M
400 398 2022 SE FT Data Scientist 215300 USD 215300 US 100 US L
401 399 2022 SE FT Data Scientist 158200 USD 158200 US 100 US L
402 400 2022 SE FT Data Engineer 209100 USD 209100 US 100 US L
403 401 2022 SE FT Data Engineer 154600 USD 154600 US 100 US L
404 402 2022 SE FT Data Analyst 115934 USD 115934 US 0 US M
405 403 2022 SE FT Data Analyst 81666 USD 81666 US 0 US M
406 404 2022 SE FT Data Engineer 175000 USD 175000 US 100 US M
407 405 2022 MI FT Data Engineer 75000 GBP 98158 GB 0 GB M
408 406 2022 MI FT Data Analyst 58000 USD 58000 US 0 US S
409 407 2022 SE FT Data Engineer 183600 USD 183600 US 100 US L
410 408 2022 MI FT Data Analyst 40000 GBP 52351 GB 100 GB M
411 409 2022 SE FT Data Scientist 180000 USD 180000 US 100 US M
412 410 2022 MI FT Data Scientist 55000 GBP 71982 GB 0 GB M
413 411 2022 MI FT Data Scientist 35000 GBP 45807 GB 0 GB M
414 412 2022 MI FT Data Engineer 60000 EUR 65949 GR 100 GR M
415 413 2022 MI FT Data Engineer 45000 EUR 49461 GR 100 GR M
416 414 2022 MI FT Data Engineer 60000 GBP 78526 GB 100 GB M
417 415 2022 MI FT Data Engineer 45000 GBP 58894 GB 100 GB M
418 416 2022 SE FT Data Scientist 260000 USD 260000 US 100 US M
419 417 2022 SE FT Data Science Engineer 60000 USD 60000 AR 100 MX L
420 418 2022 MI FT Data Engineer 63900 USD 63900 US 0 US M
421 419 2022 MI FT Machine Learning Scientist 160000 USD 160000 US 100 US L
422 420 2022 MI FT Machine Learning Scientist 112300 USD 112300 US 100 US L
423 421 2022 MI FT Data Science Manager 241000 USD 241000 US 100 US M
424 422 2022 MI FT Data Science Manager 159000 USD 159000 US 100 US M
425 423 2022 SE FT Data Scientist 180000 USD 180000 US 0 US M
426 424 2022 SE FT Data Scientist 80000 USD 80000 US 0 US M
427 425 2022 MI FT Data Engineer 82900 USD 82900 US 0 US M
428 426 2022 SE FT Data Engineer 100800 USD 100800 US 100 US L
429 427 2022 MI FT Data Engineer 45000 EUR 49461 ES 100 ES M
430 428 2022 SE FT Data Scientist 140400 USD 140400 US 0 US L
431 429 2022 MI FT Data Analyst 30000 GBP 39263 GB 100 GB M
432 430 2022 MI FT Data Analyst 40000 EUR 43966 ES 100 ES M
433 431 2022 MI FT Data Analyst 30000 EUR 32974 ES 100 ES M
434 432 2022 MI FT Data Engineer 80000 EUR 87932 ES 100 ES M
435 433 2022 MI FT Data Engineer 70000 EUR 76940 ES 100 ES M
436 434 2022 MI FT Data Engineer 80000 GBP 104702 GB 100 GB M
437 435 2022 MI FT Data Engineer 70000 GBP 91614 GB 100 GB M
438 436 2022 MI FT Data Engineer 60000 EUR 65949 ES 100 ES M
439 437 2022 MI FT Data Engineer 80000 EUR 87932 GR 100 GR M
440 438 2022 SE FT Machine Learning Engineer 189650 USD 189650 US 0 US M
441 439 2022 SE FT Machine Learning Engineer 164996 USD 164996 US 0 US M
442 440 2022 MI FT Data Analyst 40000 EUR 43966 GR 100 GR M
443 441 2022 MI FT Data Analyst 30000 EUR 32974 GR 100 GR M
444 442 2022 MI FT Data Engineer 75000 GBP 98158 GB 100 GB M
445 443 2022 MI FT Data Engineer 60000 GBP 78526 GB 100 GB M
446 444 2022 SE FT Data Scientist 215300 USD 215300 US 0 US L
447 445 2022 MI FT Data Engineer 70000 EUR 76940 GR 100 GR M
448 446 2022 SE FT Data Engineer 209100 USD 209100 US 100 US L
449 447 2022 SE FT Data Engineer 154600 USD 154600 US 100 US L
450 448 2022 SE FT Data Engineer 180000 USD 180000 US 100 US M
451 449 2022 EN FT ML Engineer 20000 EUR 21983 PT 100 PT L
452 450 2022 SE FT Data Engineer 80000 USD 80000 US 100 US M
453 451 2022 MI FT Machine Learning Developer 100000 CAD 78791 CA 100 CA M
454 452 2022 EX FT Director of Data Science 250000 CAD 196979 CA 50 CA L
455 453 2022 MI FT Machine Learning Engineer 120000 USD 120000 US 100 US S
456 454 2022 EN FT Computer Vision Engineer 125000 USD 125000 US 0 US M
457 455 2022 MI FT NLP Engineer 240000 CNY 37236 US 50 US L
458 456 2022 SE FT Data Engineer 105000 USD 105000 US 100 US M
459 457 2022 SE FT Lead Machine Learning Engineer 80000 EUR 87932 DE 0 DE M
460 458 2022 MI FT Business Data Analyst 1400000 INR 18442 IN 100 IN M
461 459 2022 MI FT Data Scientist 2400000 INR 31615 IN 100 IN L
462 460 2022 MI FT Machine Learning Infrastructure Engineer 53000 EUR 58255 PT 50 PT L
463 461 2022 EN FT Financial Data Analyst 100000 USD 100000 US 50 US L
464 462 2022 MI PT Data Engineer 50000 EUR 54957 DE 50 DE L
465 463 2022 EN FT Data Scientist 1400000 INR 18442 IN 100 IN M
466 464 2022 SE FT Principal Data Scientist 148000 EUR 162674 DE 100 DE M
467 465 2022 EN FT Data Engineer 120000 USD 120000 US 100 US M
468 466 2022 SE FT Research Scientist 144000 USD 144000 US 50 US L
469 467 2022 SE FT Data Scientist 104890 USD 104890 US 100 US M
470 468 2022 SE FT Data Engineer 100000 USD 100000 US 100 US M
471 469 2022 SE FT Data Scientist 140000 USD 140000 US 100 US M
472 470 2022 MI FT Data Analyst 135000 USD 135000 US 100 US M
473 471 2022 MI FT Data Analyst 50000 USD 50000 US 100 US M
474 472 2022 SE FT Data Scientist 220000 USD 220000 US 100 US M
475 473 2022 SE FT Data Scientist 140000 USD 140000 US 100 US M
476 474 2022 MI FT Data Scientist 140000 GBP 183228 GB 0 GB M
477 475 2022 MI FT Data Scientist 70000 GBP 91614 GB 0 GB M
478 476 2022 SE FT Data Scientist 185100 USD 185100 US 100 US M
479 477 2022 SE FT Machine Learning Engineer 220000 USD 220000 US 100 US M
480 478 2022 MI FT Data Scientist 200000 USD 200000 US 100 US M
481 479 2022 MI FT Data Scientist 120000 USD 120000 US 100 US M
482 480 2022 SE FT Machine Learning Engineer 120000 USD 120000 AE 100 AE S
483 481 2022 SE FT Machine Learning Engineer 65000 USD 65000 AE 100 AE S
484 482 2022 EX FT Data Engineer 324000 USD 324000 US 100 US M
485 483 2022 EX FT Data Engineer 216000 USD 216000 US 100 US M
486 484 2022 SE FT Data Engineer 210000 USD 210000 US 100 US M
487 485 2022 SE FT Machine Learning Engineer 120000 USD 120000 US 100 US M
488 486 2022 SE FT Data Scientist 230000 USD 230000 US 100 US M
489 487 2022 EN PT Data Scientist 100000 USD 100000 DZ 50 DZ M
490 488 2022 MI FL Data Scientist 100000 USD 100000 CA 100 US M
491 489 2022 EN CT Applied Machine Learning Scientist 29000 EUR 31875 TN 100 CZ M
492 490 2022 SE FT Head of Data 200000 USD 200000 MY 100 US M
493 491 2022 MI FT Principal Data Analyst 75000 USD 75000 CA 100 CA S
494 492 2022 MI FT Data Scientist 150000 PLN 35590 PL 100 PL L
495 493 2022 SE FT Machine Learning Developer 100000 CAD 78791 CA 100 CA M
496 494 2022 SE FT Data Scientist 100000 USD 100000 BR 100 US M
497 495 2022 MI FT Machine Learning Scientist 153000 USD 153000 US 50 US M
498 496 2022 EN FT Data Engineer 52800 EUR 58035 PK 100 DE M
499 497 2022 SE FT Data Scientist 165000 USD 165000 US 100 US M
500 498 2022 SE FT Research Scientist 85000 EUR 93427 FR 50 FR L
501 499 2022 EN FT Data Scientist 66500 CAD 52396 CA 100 CA L
502 500 2022 SE FT Machine Learning Engineer 57000 EUR 62651 NL 100 NL L
503 501 2022 MI FT Head of Data 30000 EUR 32974 EE 100 EE S
504 502 2022 EN FT Data Scientist 40000 USD 40000 JP 100 MY L
505 503 2022 MI FT Machine Learning Engineer 121000 AUD 87425 AU 100 AU L
506 504 2022 SE FT Data Engineer 115000 USD 115000 US 100 US M
507 505 2022 EN FT Data Scientist 120000 AUD 86703 AU 50 AU M
508 506 2022 MI FT Applied Machine Learning Scientist 75000 USD 75000 BO 100 US L
509 507 2022 MI FT Research Scientist 59000 EUR 64849 AT 0 AT L
510 508 2022 EN FT Research Scientist 120000 USD 120000 US 100 US L
511 509 2022 MI FT Applied Data Scientist 157000 USD 157000 US 100 US L
512 510 2022 EN FT Computer Vision Software Engineer 150000 USD 150000 AU 100 AU S
513 511 2022 MI FT Business Data Analyst 90000 CAD 70912 CA 50 CA L
514 512 2022 EN FT Data Engineer 65000 USD 65000 US 100 US S
515 513 2022 SE FT Machine Learning Engineer 65000 EUR 71444 IE 100 IE S
516 514 2022 EN FT Data Analytics Engineer 20000 USD 20000 PK 0 PK M
517 515 2022 MI FT Data Scientist 48000 USD 48000 RU 100 US S
518 516 2022 SE FT Data Science Manager 152500 USD 152500 US 100 US M
519 517 2022 MI FT Data Engineer 62000 EUR 68147 FR 100 FR M
520 518 2022 MI FT Data Scientist 115000 CHF 122346 CH 0 CH L
521 519 2022 SE FT Applied Data Scientist 380000 USD 380000 US 100 US L
522 520 2022 MI FT Data Scientist 88000 CAD 69336 CA 100 CA M
523 521 2022 EN FT Computer Vision Engineer 10000 USD 10000 PT 100 LU M
524 522 2022 MI FT Data Analyst 20000 USD 20000 GR 100 GR S
525 523 2022 SE FT Data Analytics Lead 405000 USD 405000 US 100 US L
526 524 2022 MI FT Data Scientist 135000 USD 135000 US 100 US L
527 525 2022 SE FT Applied Data Scientist 177000 USD 177000 US 100 US L
528 526 2022 MI FT Data Scientist 78000 USD 78000 US 100 US M
529 527 2022 SE FT Data Analyst 135000 USD 135000 US 100 US M
530 528 2022 SE FT Data Analyst 100000 USD 100000 US 100 US M
531 529 2022 SE FT Data Analyst 90320 USD 90320 US 100 US M
532 530 2022 MI FT Data Analyst 85000 USD 85000 CA 0 CA M
533 531 2022 MI FT Data Analyst 75000 USD 75000 CA 0 CA M
534 532 2022 SE FT Machine Learning Engineer 214000 USD 214000 US 100 US M
535 533 2022 SE FT Machine Learning Engineer 192600 USD 192600 US 100 US M
536 534 2022 SE FT Data Architect 266400 USD 266400 US 100 US M
537 535 2022 SE FT Data Architect 213120 USD 213120 US 100 US M
538 536 2022 SE FT Data Analyst 112900 USD 112900 US 100 US M
539 537 2022 SE FT Data Engineer 155000 USD 155000 US 100 US M
540 538 2022 MI FT Data Scientist 141300 USD 141300 US 0 US M
541 539 2022 MI FT Data Scientist 102100 USD 102100 US 0 US M
542 540 2022 SE FT Data Analyst 115934 USD 115934 US 100 US M
543 541 2022 SE FT Data Analyst 81666 USD 81666 US 100 US M
544 542 2022 MI FT Data Engineer 206699 USD 206699 US 0 US M
545 543 2022 MI FT Data Engineer 99100 USD 99100 US 0 US M
546 544 2022 SE FT Data Engineer 130000 USD 130000 US 100 US M
547 545 2022 SE FT Data Engineer 115000 USD 115000 US 100 US M
548 546 2022 SE FT Data Engineer 110500 USD 110500 US 100 US M
549 547 2022 SE FT Data Engineer 130000 USD 130000 US 100 US M
550 548 2022 SE FT Data Analyst 99050 USD 99050 US 100 US M
551 549 2022 SE FT Data Engineer 160000 USD 160000 US 100 US M
552 550 2022 SE FT Data Scientist 205300 USD 205300 US 0 US L
553 551 2022 SE FT Data Scientist 140400 USD 140400 US 0 US L
554 552 2022 SE FT Data Scientist 176000 USD 176000 US 100 US M
555 553 2022 SE FT Data Scientist 144000 USD 144000 US 100 US M
556 554 2022 SE FT Data Engineer 200100 USD 200100 US 100 US M
557 555 2022 SE FT Data Engineer 160000 USD 160000 US 100 US M
558 556 2022 SE FT Data Engineer 145000 USD 145000 US 100 US M
559 557 2022 SE FT Data Engineer 70500 USD 70500 US 0 US M
560 558 2022 SE FT Data Scientist 205300 USD 205300 US 0 US M
561 559 2022 SE FT Data Scientist 140400 USD 140400 US 0 US M
562 560 2022 SE FT Analytics Engineer 205300 USD 205300 US 0 US M
563 561 2022 SE FT Analytics Engineer 184700 USD 184700 US 0 US M
564 562 2022 SE FT Data Engineer 175100 USD 175100 US 100 US M
565 563 2022 SE FT Data Engineer 140250 USD 140250 US 100 US M
566 564 2022 SE FT Data Analyst 116150 USD 116150 US 100 US M
567 565 2022 SE FT Data Engineer 54000 USD 54000 US 0 US M
568 566 2022 SE FT Data Analyst 170000 USD 170000 US 100 US M
569 567 2022 MI FT Data Analyst 50000 GBP 65438 GB 0 GB M
570 568 2022 SE FT Data Analyst 80000 USD 80000 US 100 US M
571 569 2022 SE FT Data Scientist 140000 USD 140000 US 100 US M
572 570 2022 SE FT Data Scientist 210000 USD 210000 US 100 US M
573 571 2022 SE FT Data Scientist 140000 USD 140000 US 100 US M
574 572 2022 SE FT Data Analyst 100000 USD 100000 US 100 US M
575 573 2022 SE FT Data Analyst 69000 USD 69000 US 100 US M
576 574 2022 SE FT Data Scientist 210000 USD 210000 US 100 US M
577 575 2022 SE FT Data Scientist 140000 USD 140000 US 100 US M
578 576 2022 SE FT Data Scientist 210000 USD 210000 US 100 US M
579 577 2022 SE FT Data Analyst 150075 USD 150075 US 100 US M
580 578 2022 SE FT Data Engineer 100000 USD 100000 US 100 US M
581 579 2022 SE FT Data Engineer 25000 USD 25000 US 100 US M
582 580 2022 SE FT Data Analyst 126500 USD 126500 US 100 US M
583 581 2022 SE FT Data Analyst 106260 USD 106260 US 100 US M
584 582 2022 SE FT Data Engineer 220110 USD 220110 US 100 US M
585 583 2022 SE FT Data Engineer 160080 USD 160080 US 100 US M
586 584 2022 SE FT Data Analyst 105000 USD 105000 US 100 US M
587 585 2022 SE FT Data Analyst 110925 USD 110925 US 100 US M
588 586 2022 MI FT Data Analyst 35000 GBP 45807 GB 0 GB M
589 587 2022 SE FT Data Scientist 140000 USD 140000 US 100 US M
590 588 2022 SE FT Data Analyst 99000 USD 99000 US 0 US M
591 589 2022 SE FT Data Analyst 60000 USD 60000 US 100 US M
592 590 2022 SE FT Data Architect 192564 USD 192564 US 100 US M
593 591 2022 SE FT Data Architect 144854 USD 144854 US 100 US M
594 592 2022 SE FT Data Scientist 230000 USD 230000 US 100 US M
595 593 2022 SE FT Data Scientist 150000 USD 150000 US 100 US M
596 594 2022 SE FT Data Analytics Manager 150260 USD 150260 US 100 US M
597 595 2022 SE FT Data Analytics Manager 109280 USD 109280 US 100 US M
598 596 2022 SE FT Data Scientist 210000 USD 210000 US 100 US M
599 597 2022 SE FT Data Analyst 170000 USD 170000 US 100 US M
600 598 2022 MI FT Data Scientist 160000 USD 160000 US 100 US M
601 599 2022 MI FT Data Scientist 130000 USD 130000 US 100 US M
602 600 2022 EN FT Data Analyst 67000 USD 67000 CA 0 CA M
603 601 2022 EN FT Data Analyst 52000 USD 52000 CA 0 CA M
604 602 2022 SE FT Data Engineer 154000 USD 154000 US 100 US M
605 603 2022 SE FT Data Engineer 126000 USD 126000 US 100 US M
606 604 2022 SE FT Data Analyst 129000 USD 129000 US 0 US M
607 605 2022 SE FT Data Analyst 150000 USD 150000 US 100 US M
608 606 2022 MI FT AI Scientist 200000 USD 200000 IN 100 US L

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

View File

@ -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())

View File

@ -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)
На графике представлены компании в двумерном пространстве, где каждая точка относится к конкретному кластеру. Различные цвета точек обозначают принадлежность к разным кластерам.
Кластеры можно рассматривать как группы компаний с схожими характеристиками местоположения и размера. Компании, находящиеся близко в двумерном пространстве, могут иметь схожие характеристики.

View File

@ -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
1 work_year experience_level employment_type job_title salary salary_currency salary_in_usd employee_residence remote_ratio company_location company_size
2 0 2020 MI FT Data Scientist 70000 EUR 79833 DE 0 DE L
3 1 2020 SE FT Machine Learning Scientist 260000 USD 260000 JP 0 JP S
4 2 2020 SE FT Big Data Engineer 85000 GBP 109024 GB 50 GB M
5 3 2020 MI FT Product Data Analyst 20000 USD 20000 HN 0 HN S
6 4 2020 SE FT Machine Learning Engineer 150000 USD 150000 US 50 US L
7 5 2020 EN FT Data Analyst 72000 USD 72000 US 100 US L
8 6 2020 SE FT Lead Data Scientist 190000 USD 190000 US 100 US S
9 7 2020 MI FT Data Scientist 11000000 HUF 35735 HU 50 HU L
10 8 2020 MI FT Business Data Analyst 135000 USD 135000 US 100 US L
11 9 2020 SE FT Lead Data Engineer 125000 USD 125000 NZ 50 NZ S
12 10 2020 EN FT Data Scientist 45000 EUR 51321 FR 0 FR S
13 11 2020 MI FT Data Scientist 3000000 INR 40481 IN 0 IN L
14 12 2020 EN FT Data Scientist 35000 EUR 39916 FR 0 FR M
15 13 2020 MI FT Lead Data Analyst 87000 USD 87000 US 100 US L
16 14 2020 MI FT Data Analyst 85000 USD 85000 US 100 US L
17 15 2020 MI FT Data Analyst 8000 USD 8000 PK 50 PK L
18 16 2020 EN FT Data Engineer 4450000 JPY 41689 JP 100 JP S
19 17 2020 SE FT Big Data Engineer 100000 EUR 114047 PL 100 GB S
20 18 2020 EN FT Data Science Consultant 423000 INR 5707 IN 50 IN M
21 19 2020 MI FT Lead Data Engineer 56000 USD 56000 PT 100 US M
22 20 2020 MI FT Machine Learning Engineer 299000 CNY 43331 CN 0 CN M
23 21 2020 MI FT Product Data Analyst 450000 INR 6072 IN 100 IN L
24 22 2020 SE FT Data Engineer 42000 EUR 47899 GR 50 GR L
25 23 2020 MI FT BI Data Analyst 98000 USD 98000 US 0 US M
26 24 2020 MI FT Lead Data Scientist 115000 USD 115000 AE 0 AE L
27 25 2020 EX FT Director of Data Science 325000 USD 325000 US 100 US L
28 26 2020 EN FT Research Scientist 42000 USD 42000 NL 50 NL L
29 27 2020 SE FT Data Engineer 720000 MXN 33511 MX 0 MX S
30 28 2020 EN CT Business Data Analyst 100000 USD 100000 US 100 US L
31 29 2020 SE FT Machine Learning Manager 157000 CAD 117104 CA 50 CA L
32 30 2020 MI FT Data Engineering Manager 51999 EUR 59303 DE 100 DE S
33 31 2020 EN FT Big Data Engineer 70000 USD 70000 US 100 US L
34 32 2020 SE FT Data Scientist 60000 EUR 68428 GR 100 US L
35 33 2020 MI FT Research Scientist 450000 USD 450000 US 0 US M
36 34 2020 MI FT Data Analyst 41000 EUR 46759 FR 50 FR L
37 35 2020 MI FT Data Engineer 65000 EUR 74130 AT 50 AT L
38 36 2020 MI FT Data Science Consultant 103000 USD 103000 US 100 US L
39 37 2020 EN FT Machine Learning Engineer 250000 USD 250000 US 50 US L
40 38 2020 EN FT Data Analyst 10000 USD 10000 NG 100 NG S
41 39 2020 EN FT Machine Learning Engineer 138000 USD 138000 US 100 US S
42 40 2020 MI FT Data Scientist 45760 USD 45760 PH 100 US S
43 41 2020 EX FT Data Engineering Manager 70000 EUR 79833 ES 50 ES L
44 42 2020 MI FT Machine Learning Infrastructure Engineer 44000 EUR 50180 PT 0 PT M
45 43 2020 MI FT Data Engineer 106000 USD 106000 US 100 US L
46 44 2020 MI FT Data Engineer 88000 GBP 112872 GB 50 GB L
47 45 2020 EN PT ML Engineer 14000 EUR 15966 DE 100 DE S
48 46 2020 MI FT Data Scientist 60000 GBP 76958 GB 100 GB S
49 47 2020 SE FT Data Engineer 188000 USD 188000 US 100 US L
50 48 2020 MI FT Data Scientist 105000 USD 105000 US 100 US L
51 49 2020 MI FT Data Engineer 61500 EUR 70139 FR 50 FR L
52 50 2020 EN FT Data Analyst 450000 INR 6072 IN 0 IN S
53 51 2020 EN FT Data Analyst 91000 USD 91000 US 100 US L
54 52 2020 EN FT AI Scientist 300000 DKK 45896 DK 50 DK S
55 53 2020 EN FT Data Engineer 48000 EUR 54742 PK 100 DE L
56 54 2020 SE FL Computer Vision Engineer 60000 USD 60000 RU 100 US S
57 55 2020 SE FT Principal Data Scientist 130000 EUR 148261 DE 100 DE M
58 56 2020 MI FT Data Scientist 34000 EUR 38776 ES 100 ES M
59 57 2020 MI FT Data Scientist 118000 USD 118000 US 100 US M
60 58 2020 SE FT Data Scientist 120000 USD 120000 US 50 US L
61 59 2020 MI FT Data Scientist 138350 USD 138350 US 100 US M
62 60 2020 MI FT Data Engineer 110000 USD 110000 US 100 US L
63 61 2020 MI FT Data Engineer 130800 USD 130800 ES 100 US M
64 62 2020 EN PT Data Scientist 19000 EUR 21669 IT 50 IT S
65 63 2020 SE FT Data Scientist 412000 USD 412000 US 100 US L
66 64 2020 SE FT Machine Learning Engineer 40000 EUR 45618 HR 100 HR S
67 65 2020 EN FT Data Scientist 55000 EUR 62726 DE 50 DE S
68 66 2020 EN FT Data Scientist 43200 EUR 49268 DE 0 DE S
69 67 2020 SE FT Data Science Manager 190200 USD 190200 US 100 US M
70 68 2020 EN FT Data Scientist 105000 USD 105000 US 100 US S
71 69 2020 SE FT Data Scientist 80000 EUR 91237 AT 0 AT S
72 70 2020 MI FT Data Scientist 55000 EUR 62726 FR 50 LU S
73 71 2020 MI FT Data Scientist 37000 EUR 42197 FR 50 FR S
74 72 2021 EN FT Research Scientist 60000 GBP 82528 GB 50 GB L
75 73 2021 EX FT BI Data Analyst 150000 USD 150000 IN 100 US L
76 74 2021 EX FT Head of Data 235000 USD 235000 US 100 US L
77 75 2021 SE FT Data Scientist 45000 EUR 53192 FR 50 FR L
78 76 2021 MI FT BI Data Analyst 100000 USD 100000 US 100 US M
79 77 2021 MI PT 3D Computer Vision Researcher 400000 INR 5409 IN 50 IN M
80 78 2021 MI CT ML Engineer 270000 USD 270000 US 100 US L
81 79 2021 EN FT Data Analyst 80000 USD 80000 US 100 US M
82 80 2021 SE FT Data Analytics Engineer 67000 EUR 79197 DE 100 DE L
83 81 2021 MI FT Data Engineer 140000 USD 140000 US 100 US L
84 82 2021 MI FT Applied Data Scientist 68000 CAD 54238 GB 50 CA L
85 83 2021 MI FT Machine Learning Engineer 40000 EUR 47282 ES 100 ES S
86 84 2021 EX FT Director of Data Science 130000 EUR 153667 IT 100 PL L
87 85 2021 MI FT Data Engineer 110000 PLN 28476 PL 100 PL L
88 86 2021 EN FT Data Analyst 50000 EUR 59102 FR 50 FR M
89 87 2021 MI FT Data Analytics Engineer 110000 USD 110000 US 100 US L
90 88 2021 SE FT Lead Data Analyst 170000 USD 170000 US 100 US L
91 89 2021 SE FT Data Analyst 80000 USD 80000 BG 100 US S
92 90 2021 SE FT Marketing Data Analyst 75000 EUR 88654 GR 100 DK L
93 91 2021 EN FT Data Science Consultant 65000 EUR 76833 DE 100 DE S
94 92 2021 MI FT Lead Data Analyst 1450000 INR 19609 IN 100 IN L
95 93 2021 SE FT Lead Data Engineer 276000 USD 276000 US 0 US L
96 94 2021 EN FT Data Scientist 2200000 INR 29751 IN 50 IN L
97 95 2021 MI FT Cloud Data Engineer 120000 SGD 89294 SG 50 SG L
98 96 2021 EN PT AI Scientist 12000 USD 12000 BR 100 US S
99 97 2021 MI FT Financial Data Analyst 450000 USD 450000 US 100 US L
100 98 2021 EN FT Computer Vision Software Engineer 70000 USD 70000 US 100 US M
101 99 2021 MI FT Computer Vision Software Engineer 81000 EUR 95746 DE 100 US S
102 100 2021 MI FT Data Analyst 75000 USD 75000 US 0 US L
103 101 2021 SE FT Data Engineer 150000 USD 150000 US 100 US L
104 102 2021 MI FT BI Data Analyst 11000000 HUF 36259 HU 50 US L
105 103 2021 MI FT Data Analyst 62000 USD 62000 US 0 US L
106 104 2021 MI FT Data Scientist 73000 USD 73000 US 0 US L
107 105 2021 MI FT Data Analyst 37456 GBP 51519 GB 50 GB L
108 106 2021 MI FT Research Scientist 235000 CAD 187442 CA 100 CA L
109 107 2021 SE FT Data Engineer 115000 USD 115000 US 100 US S
110 108 2021 SE FT Data Engineer 150000 USD 150000 US 100 US M
111 109 2021 EN FT Data Engineer 2250000 INR 30428 IN 100 IN L
112 110 2021 SE FT Machine Learning Engineer 80000 EUR 94564 DE 50 DE L
113 111 2021 SE FT Director of Data Engineering 82500 GBP 113476 GB 100 GB M
114 112 2021 SE FT Lead Data Engineer 75000 GBP 103160 GB 100 GB S
115 113 2021 EN PT AI Scientist 12000 USD 12000 PK 100 US M
116 114 2021 MI FT Data Engineer 38400 EUR 45391 NL 100 NL L
117 115 2021 EN FT Machine Learning Scientist 225000 USD 225000 US 100 US L
118 116 2021 MI FT Data Scientist 50000 USD 50000 NG 100 NG L
119 117 2021 MI FT Data Science Engineer 34000 EUR 40189 GR 100 GR M
120 118 2021 EN FT Data Analyst 90000 USD 90000 US 100 US S
121 119 2021 MI FT Data Engineer 200000 USD 200000 US 100 US L
122 120 2021 MI FT Big Data Engineer 60000 USD 60000 ES 50 RO M
123 121 2021 SE FT Principal Data Engineer 200000 USD 200000 US 100 US M
124 122 2021 EN FT Data Analyst 50000 USD 50000 US 100 US M
125 123 2021 EN FT Applied Data Scientist 80000 GBP 110037 GB 0 GB L
126 124 2021 EN PT Data Analyst 8760 EUR 10354 ES 50 ES M
127 125 2021 MI FT Principal Data Scientist 151000 USD 151000 US 100 US L
128 126 2021 SE FT Machine Learning Scientist 120000 USD 120000 US 50 US S
129 127 2021 MI FT Data Scientist 700000 INR 9466 IN 0 IN S
130 128 2021 EN FT Machine Learning Engineer 20000 USD 20000 IN 100 IN S
131 129 2021 SE FT Lead Data Scientist 3000000 INR 40570 IN 50 IN L
132 130 2021 EN FT Machine Learning Developer 100000 USD 100000 IQ 50 IQ S
133 131 2021 EN FT Data Scientist 42000 EUR 49646 FR 50 FR M
134 132 2021 MI FT Applied Machine Learning Scientist 38400 USD 38400 VN 100 US M
135 133 2021 SE FT Computer Vision Engineer 24000 USD 24000 BR 100 BR M
136 134 2021 EN FT Data Scientist 100000 USD 100000 US 0 US S
137 135 2021 MI FT Data Analyst 90000 USD 90000 US 100 US M
138 136 2021 MI FT ML Engineer 7000000 JPY 63711 JP 50 JP S
139 137 2021 MI FT ML Engineer 8500000 JPY 77364 JP 50 JP S
140 138 2021 SE FT Principal Data Scientist 220000 USD 220000 US 0 US L
141 139 2021 EN FT Data Scientist 80000 USD 80000 US 100 US M
142 140 2021 MI FT Data Analyst 135000 USD 135000 US 100 US L
143 141 2021 SE FT Data Science Manager 240000 USD 240000 US 0 US L
144 142 2021 SE FT Data Engineering Manager 150000 USD 150000 US 0 US L
145 143 2021 MI FT Data Scientist 82500 USD 82500 US 100 US S
146 144 2021 MI FT Data Engineer 100000 USD 100000 US 100 US L
147 145 2021 SE FT Machine Learning Engineer 70000 EUR 82744 BE 50 BE M
148 146 2021 MI FT Research Scientist 53000 EUR 62649 FR 50 FR M
149 147 2021 MI FT Data Engineer 90000 USD 90000 US 100 US L
150 148 2021 SE FT Data Engineering Manager 153000 USD 153000 US 100 US L
151 149 2021 SE FT Cloud Data Engineer 160000 USD 160000 BR 100 US S
152 150 2021 SE FT Director of Data Science 168000 USD 168000 JP 0 JP S
153 151 2021 MI FT Data Scientist 150000 USD 150000 US 100 US M
154 152 2021 MI FT Data Scientist 95000 CAD 75774 CA 100 CA L
155 153 2021 EN FT Data Scientist 13400 USD 13400 UA 100 UA L
156 154 2021 SE FT Data Science Manager 144000 USD 144000 US 100 US L
157 155 2021 SE FT Data Science Engineer 159500 CAD 127221 CA 50 CA L
158 156 2021 MI FT Data Scientist 160000 SGD 119059 SG 100 IL M
159 157 2021 MI FT Applied Machine Learning Scientist 423000 USD 423000 US 50 US L
160 158 2021 SE FT Data Analytics Manager 120000 USD 120000 US 100 US M
161 159 2021 EN FT Machine Learning Engineer 125000 USD 125000 US 100 US S
162 160 2021 EX FT Head of Data 230000 USD 230000 RU 50 RU L
163 161 2021 EX FT Head of Data Science 85000 USD 85000 RU 0 RU M
164 162 2021 MI FT Data Engineer 24000 EUR 28369 MT 50 MT L
165 163 2021 EN FT Data Science Consultant 54000 EUR 63831 DE 50 DE L
166 164 2021 EX FT Director of Data Science 110000 EUR 130026 DE 50 DE M
167 165 2021 SE FT Data Specialist 165000 USD 165000 US 100 US L
168 166 2021 EN FT Data Engineer 80000 USD 80000 US 100 US L
169 167 2021 EX FT Director of Data Science 250000 USD 250000 US 0 US L
170 168 2021 EN FT BI Data Analyst 55000 USD 55000 US 50 US S
171 169 2021 MI FT Data Architect 150000 USD 150000 US 100 US L
172 170 2021 MI FT Data Architect 170000 USD 170000 US 100 US L
173 171 2021 MI FT Data Engineer 60000 GBP 82528 GB 100 GB L
174 172 2021 EN FT Data Analyst 60000 USD 60000 US 100 US S
175 173 2021 SE FT Principal Data Scientist 235000 USD 235000 US 100 US L
176 174 2021 SE FT Research Scientist 51400 EUR 60757 PT 50 PT L
177 175 2021 SE FT Data Engineering Manager 174000 USD 174000 US 100 US L
178 176 2021 MI FT Data Scientist 58000 MXN 2859 MX 0 MX S
179 177 2021 MI FT Data Scientist 30400000 CLP 40038 CL 100 CL L
180 178 2021 EN FT Machine Learning Engineer 81000 USD 81000 US 50 US S
181 179 2021 MI FT Data Scientist 420000 INR 5679 IN 100 US S
182 180 2021 MI FT Big Data Engineer 1672000 INR 22611 IN 0 IN L
183 181 2021 MI FT Data Scientist 76760 EUR 90734 DE 50 DE L
184 182 2021 MI FT Data Engineer 22000 EUR 26005 RO 0 US L
185 183 2021 SE FT Finance Data Analyst 45000 GBP 61896 GB 50 GB L
186 184 2021 MI FL Machine Learning Scientist 12000 USD 12000 PK 50 PK M
187 185 2021 MI FT Data Engineer 4000 USD 4000 IR 100 IR M
188 186 2021 SE FT Data Analytics Engineer 50000 USD 50000 VN 100 GB M
189 187 2021 EX FT Data Science Consultant 59000 EUR 69741 FR 100 ES S
190 188 2021 SE FT Data Engineer 65000 EUR 76833 RO 50 GB S
191 189 2021 MI FT Machine Learning Engineer 74000 USD 74000 JP 50 JP S
192 190 2021 SE FT Data Science Manager 152000 USD 152000 US 100 FR L
193 191 2021 EN FT Machine Learning Engineer 21844 USD 21844 CO 50 CO M
194 192 2021 MI FT Big Data Engineer 18000 USD 18000 MD 0 MD S
195 193 2021 SE FT Data Science Manager 174000 USD 174000 US 100 US L
196 194 2021 SE FT Research Scientist 120500 CAD 96113 CA 50 CA L
197 195 2021 MI FT Data Scientist 147000 USD 147000 US 50 US L
198 196 2021 EN FT BI Data Analyst 9272 USD 9272 KE 100 KE S
199 197 2021 SE FT Machine Learning Engineer 1799997 INR 24342 IN 100 IN L
200 198 2021 SE FT Data Science Manager 4000000 INR 54094 IN 50 US L
201 199 2021 EN FT Data Science Consultant 90000 USD 90000 US 100 US S
202 200 2021 MI FT Data Scientist 52000 EUR 61467 DE 50 AT M
203 201 2021 SE FT Machine Learning Infrastructure Engineer 195000 USD 195000 US 100 US M
204 202 2021 MI FT Data Scientist 32000 EUR 37825 ES 100 ES L
205 203 2021 SE FT Research Scientist 50000 USD 50000 FR 100 US S
206 204 2021 MI FT Data Scientist 160000 USD 160000 US 100 US L
207 205 2021 MI FT Data Scientist 69600 BRL 12901 BR 0 BR S
208 206 2021 SE FT Machine Learning Engineer 200000 USD 200000 US 100 US L
209 207 2021 SE FT Data Engineer 165000 USD 165000 US 0 US M
210 208 2021 MI FL Data Engineer 20000 USD 20000 IT 0 US L
211 209 2021 SE FT Data Analytics Manager 120000 USD 120000 US 0 US L
212 210 2021 MI FT Machine Learning Engineer 21000 EUR 24823 SI 50 SI L
213 211 2021 MI FT Research Scientist 48000 EUR 56738 FR 50 FR S
214 212 2021 MI FT Data Engineer 48000 GBP 66022 HK 50 GB S
215 213 2021 EN FT Big Data Engineer 435000 INR 5882 IN 0 CH L
216 214 2021 EN FT Machine Learning Engineer 21000 EUR 24823 DE 50 DE M
217 215 2021 SE FT Principal Data Engineer 185000 USD 185000 US 100 US L
218 216 2021 EN PT Computer Vision Engineer 180000 DKK 28609 DK 50 DK S
219 217 2021 MI FT Data Scientist 76760 EUR 90734 DE 50 DE L
220 218 2021 MI FT Machine Learning Engineer 75000 EUR 88654 BE 100 BE M
221 219 2021 SE FT Data Analytics Manager 140000 USD 140000 US 100 US L
222 220 2021 MI FT Machine Learning Engineer 180000 PLN 46597 PL 100 PL L
223 221 2021 MI FT Data Scientist 85000 GBP 116914 GB 50 GB L
224 222 2021 MI FT Data Scientist 2500000 INR 33808 IN 0 IN M
225 223 2021 MI FT Data Scientist 40900 GBP 56256 GB 50 GB L
226 224 2021 SE FT Machine Learning Scientist 225000 USD 225000 US 100 CA L
227 225 2021 EX CT Principal Data Scientist 416000 USD 416000 US 100 US S
228 226 2021 SE FT Data Scientist 110000 CAD 87738 CA 100 CA S
229 227 2021 MI FT Data Scientist 75000 EUR 88654 DE 50 DE L
230 228 2021 SE FT Data Scientist 135000 USD 135000 US 0 US L
231 229 2021 SE FT Data Analyst 90000 CAD 71786 CA 100 CA M
232 230 2021 EN FT Big Data Engineer 1200000 INR 16228 IN 100 IN L
233 231 2021 SE FT ML Engineer 256000 USD 256000 US 100 US S
234 232 2021 SE FT Director of Data Engineering 200000 USD 200000 US 100 US L
235 233 2021 SE FT Data Analyst 200000 USD 200000 US 100 US L
236 234 2021 MI FT Data Architect 180000 USD 180000 US 100 US L
237 235 2021 MI FT Head of Data Science 110000 USD 110000 US 0 US S
238 236 2021 MI FT Research Scientist 80000 CAD 63810 CA 100 CA M
239 237 2021 MI FT Data Scientist 39600 EUR 46809 ES 100 ES M
240 238 2021 EN FT Data Scientist 4000 USD 4000 VN 0 VN M
241 239 2021 EN FT Data Engineer 1600000 INR 21637 IN 50 IN M
242 240 2021 SE FT Data Scientist 130000 CAD 103691 CA 100 CA L
243 241 2021 MI FT Data Analyst 80000 USD 80000 US 100 US L
244 242 2021 MI FT Data Engineer 110000 USD 110000 US 100 US L
245 243 2021 SE FT Data Scientist 165000 USD 165000 US 100 US L
246 244 2021 EN FT AI Scientist 1335000 INR 18053 IN 100 AS S
247 245 2021 MI FT Data Engineer 52500 GBP 72212 GB 50 GB L
248 246 2021 EN FT Data Scientist 31000 EUR 36643 FR 50 FR L
249 247 2021 MI FT Data Engineer 108000 TRY 12103 TR 0 TR M
250 248 2021 SE FT Data Engineer 70000 GBP 96282 GB 50 GB L
251 249 2021 SE FT Principal Data Analyst 170000 USD 170000 US 100 US M
252 250 2021 MI FT Data Scientist 115000 USD 115000 US 50 US L
253 251 2021 EN FT Data Scientist 90000 USD 90000 US 100 US S
254 252 2021 EX FT Principal Data Engineer 600000 USD 600000 US 100 US L
255 253 2021 EN FT Data Scientist 2100000 INR 28399 IN 100 IN M
256 254 2021 MI FT Data Analyst 93000 USD 93000 US 100 US L
257 255 2021 SE FT Big Data Architect 125000 CAD 99703 CA 50 CA M
258 256 2021 MI FT Data Engineer 200000 USD 200000 US 100 US L
259 257 2021 SE FT Principal Data Scientist 147000 EUR 173762 DE 100 DE M
260 258 2021 SE FT Machine Learning Engineer 185000 USD 185000 US 50 US L
261 259 2021 EX FT Director of Data Science 120000 EUR 141846 DE 0 DE L
262 260 2021 MI FT Data Scientist 130000 USD 130000 US 50 US L
263 261 2021 SE FT Data Analyst 54000 EUR 63831 DE 50 DE L
264 262 2021 MI FT Data Scientist 1250000 INR 16904 IN 100 IN S
265 263 2021 SE FT Machine Learning Engineer 4900000 INR 66265 IN 0 IN L
266 264 2021 MI FT Data Scientist 21600 EUR 25532 RS 100 DE S
267 265 2021 SE FT Lead Data Engineer 160000 USD 160000 PR 50 US S
268 266 2021 MI FT Data Engineer 93150 USD 93150 US 0 US M
269 267 2021 MI FT Data Engineer 111775 USD 111775 US 0 US M
270 268 2021 MI FT Data Engineer 250000 TRY 28016 TR 100 TR M
271 269 2021 EN FT Data Engineer 55000 EUR 65013 DE 50 DE M
272 270 2021 EN FT Data Engineer 72500 USD 72500 US 100 US L
273 271 2021 SE FT Computer Vision Engineer 102000 BRL 18907 BR 0 BR M
274 272 2021 EN FT Data Science Consultant 65000 EUR 76833 DE 0 DE L
275 273 2021 EN FT Machine Learning Engineer 85000 USD 85000 NL 100 DE S
276 274 2021 SE FT Data Scientist 65720 EUR 77684 FR 50 FR M
277 275 2021 EN FT Data Scientist 100000 USD 100000 US 100 US M
278 276 2021 EN FT Data Scientist 58000 USD 58000 US 50 US L
279 277 2021 SE FT AI Scientist 55000 USD 55000 ES 100 ES L
280 278 2021 SE FT Data Scientist 180000 TRY 20171 TR 50 TR L
281 279 2021 EN FT Business Data Analyst 50000 EUR 59102 LU 100 LU L
282 280 2021 MI FT Data Engineer 112000 USD 112000 US 100 US L
283 281 2021 EN FT Research Scientist 100000 USD 100000 JE 0 CN L
284 282 2021 MI PT Data Engineer 59000 EUR 69741 NL 100 NL L
285 283 2021 SE CT Staff Data Scientist 105000 USD 105000 US 100 US M
286 284 2021 MI FT Research Scientist 69999 USD 69999 CZ 50 CZ L
287 285 2021 SE FT Data Science Manager 7000000 INR 94665 IN 50 IN L
288 286 2021 SE FT Head of Data 87000 EUR 102839 SI 100 SI L
289 287 2021 MI FT Data Scientist 109000 USD 109000 US 50 US L
290 288 2021 MI FT Machine Learning Engineer 43200 EUR 51064 IT 50 IT L
291 289 2022 SE FT Data Engineer 135000 USD 135000 US 100 US M
292 290 2022 SE FT Data Analyst 155000 USD 155000 US 100 US M
293 291 2022 SE FT Data Analyst 120600 USD 120600 US 100 US M
294 292 2022 MI FT Data Scientist 130000 USD 130000 US 0 US M
295 293 2022 MI FT Data Scientist 90000 USD 90000 US 0 US M
296 294 2022 MI FT Data Engineer 170000 USD 170000 US 100 US M
297 295 2022 MI FT Data Engineer 150000 USD 150000 US 100 US M
298 296 2022 SE FT Data Analyst 102100 USD 102100 US 100 US M
299 297 2022 SE FT Data Analyst 84900 USD 84900 US 100 US M
300 298 2022 SE FT Data Scientist 136620 USD 136620 US 100 US M
301 299 2022 SE FT Data Scientist 99360 USD 99360 US 100 US M
302 300 2022 SE FT Data Scientist 90000 GBP 117789 GB 0 GB M
303 301 2022 SE FT Data Scientist 80000 GBP 104702 GB 0 GB M
304 302 2022 SE FT Data Scientist 146000 USD 146000 US 100 US M
305 303 2022 SE FT Data Scientist 123000 USD 123000 US 100 US M
306 304 2022 EN FT Data Engineer 40000 GBP 52351 GB 100 GB M
307 305 2022 SE FT Data Analyst 99000 USD 99000 US 0 US M
308 306 2022 SE FT Data Analyst 116000 USD 116000 US 0 US M
309 307 2022 MI FT Data Analyst 106260 USD 106260 US 0 US M
310 308 2022 MI FT Data Analyst 126500 USD 126500 US 0 US M
311 309 2022 EX FT Data Engineer 242000 USD 242000 US 100 US M
312 310 2022 EX FT Data Engineer 200000 USD 200000 US 100 US M
313 311 2022 MI FT Data Scientist 50000 GBP 65438 GB 0 GB M
314 312 2022 MI FT Data Scientist 30000 GBP 39263 GB 0 GB M
315 313 2022 MI FT Data Engineer 60000 GBP 78526 GB 0 GB M
316 314 2022 MI FT Data Engineer 40000 GBP 52351 GB 0 GB M
317 315 2022 SE FT Data Scientist 165220 USD 165220 US 100 US M
318 316 2022 EN FT Data Engineer 35000 GBP 45807 GB 100 GB M
319 317 2022 SE FT Data Scientist 120160 USD 120160 US 100 US M
320 318 2022 SE FT Data Analyst 90320 USD 90320 US 100 US M
321 319 2022 SE FT Data Engineer 181940 USD 181940 US 0 US M
322 320 2022 SE FT Data Engineer 132320 USD 132320 US 0 US M
323 321 2022 SE FT Data Engineer 220110 USD 220110 US 0 US M
324 322 2022 SE FT Data Engineer 160080 USD 160080 US 0 US M
325 323 2022 SE FT Data Scientist 180000 USD 180000 US 0 US L
326 324 2022 SE FT Data Scientist 120000 USD 120000 US 0 US L
327 325 2022 SE FT Data Analyst 124190 USD 124190 US 100 US M
328 326 2022 EX FT Data Analyst 130000 USD 130000 US 100 US M
329 327 2022 EX FT Data Analyst 110000 USD 110000 US 100 US M
330 328 2022 SE FT Data Analyst 170000 USD 170000 US 100 US M
331 329 2022 MI FT Data Analyst 115500 USD 115500 US 100 US M
332 330 2022 SE FT Data Analyst 112900 USD 112900 US 100 US M
333 331 2022 SE FT Data Analyst 90320 USD 90320 US 100 US M
334 332 2022 SE FT Data Analyst 112900 USD 112900 US 100 US M
335 333 2022 SE FT Data Analyst 90320 USD 90320 US 100 US M
336 334 2022 SE FT Data Engineer 165400 USD 165400 US 100 US M
337 335 2022 SE FT Data Engineer 132320 USD 132320 US 100 US M
338 336 2022 MI FT Data Analyst 167000 USD 167000 US 100 US M
339 337 2022 SE FT Data Engineer 243900 USD 243900 US 100 US M
340 338 2022 SE FT Data Analyst 136600 USD 136600 US 100 US M
341 339 2022 SE FT Data Analyst 109280 USD 109280 US 100 US M
342 340 2022 SE FT Data Engineer 128875 USD 128875 US 100 US M
343 341 2022 SE FT Data Engineer 93700 USD 93700 US 100 US M
344 342 2022 EX FT Head of Data Science 224000 USD 224000 US 100 US M
345 343 2022 EX FT Head of Data Science 167875 USD 167875 US 100 US M
346 344 2022 EX FT Analytics Engineer 175000 USD 175000 US 100 US M
347 345 2022 SE FT Data Engineer 156600 USD 156600 US 100 US M
348 346 2022 SE FT Data Engineer 108800 USD 108800 US 0 US M
349 347 2022 SE FT Data Scientist 95550 USD 95550 US 0 US M
350 348 2022 SE FT Data Engineer 113000 USD 113000 US 0 US L
351 349 2022 SE FT Data Analyst 135000 USD 135000 US 100 US M
352 350 2022 SE FT Data Science Manager 161342 USD 161342 US 100 US M
353 351 2022 SE FT Data Science Manager 137141 USD 137141 US 100 US M
354 352 2022 SE FT Data Scientist 167000 USD 167000 US 100 US M
355 353 2022 SE FT Data Scientist 123000 USD 123000 US 100 US M
356 354 2022 SE FT Data Engineer 60000 GBP 78526 GB 0 GB M
357 355 2022 SE FT Data Engineer 50000 GBP 65438 GB 0 GB M
358 356 2022 SE FT Data Scientist 150000 USD 150000 US 0 US M
359 357 2022 SE FT Data Scientist 211500 USD 211500 US 100 US M
360 358 2022 SE FT Data Architect 192400 USD 192400 CA 100 CA M
361 359 2022 SE FT Data Architect 90700 USD 90700 CA 100 CA M
362 360 2022 SE FT Data Analyst 130000 USD 130000 CA 100 CA M
363 361 2022 SE FT Data Analyst 61300 USD 61300 CA 100 CA M
364 362 2022 SE FT Data Analyst 130000 USD 130000 CA 100 CA M
365 363 2022 SE FT Data Analyst 61300 USD 61300 CA 100 CA M
366 364 2022 SE FT Data Engineer 160000 USD 160000 US 0 US L
367 365 2022 SE FT Data Scientist 138600 USD 138600 US 100 US M
368 366 2022 SE FT Data Engineer 136000 USD 136000 US 0 US M
369 367 2022 MI FT Data Analyst 58000 USD 58000 US 0 US S
370 368 2022 EX FT Analytics Engineer 135000 USD 135000 US 100 US M
371 369 2022 SE FT Data Scientist 170000 USD 170000 US 100 US M
372 370 2022 SE FT Data Scientist 123000 USD 123000 US 100 US M
373 371 2022 SE FT Machine Learning Engineer 189650 USD 189650 US 0 US M
374 372 2022 SE FT Machine Learning Engineer 164996 USD 164996 US 0 US M
375 373 2022 MI FT ETL Developer 50000 EUR 54957 GR 0 GR M
376 374 2022 MI FT ETL Developer 50000 EUR 54957 GR 0 GR M
377 375 2022 EX FT Lead Data Engineer 150000 CAD 118187 CA 100 CA S
378 376 2022 SE FT Data Analyst 132000 USD 132000 US 0 US M
379 377 2022 SE FT Data Engineer 165400 USD 165400 US 100 US M
380 378 2022 SE FT Data Architect 208775 USD 208775 US 100 US M
381 379 2022 SE FT Data Architect 147800 USD 147800 US 100 US M
382 380 2022 SE FT Data Engineer 136994 USD 136994 US 100 US M
383 381 2022 SE FT Data Engineer 101570 USD 101570 US 100 US M
384 382 2022 SE FT Data Analyst 128875 USD 128875 US 100 US M
385 383 2022 SE FT Data Analyst 93700 USD 93700 US 100 US M
386 384 2022 EX FT Head of Machine Learning 6000000 INR 79039 IN 50 IN L
387 385 2022 SE FT Data Engineer 132320 USD 132320 US 100 US M
388 386 2022 EN FT Machine Learning Engineer 28500 GBP 37300 GB 100 GB L
389 387 2022 SE FT Data Analyst 164000 USD 164000 US 0 US M
390 388 2022 SE FT Data Engineer 155000 USD 155000 US 100 US M
391 389 2022 MI FT Machine Learning Engineer 95000 GBP 124333 GB 0 GB M
392 390 2022 MI FT Machine Learning Engineer 75000 GBP 98158 GB 0 GB M
393 391 2022 MI FT AI Scientist 120000 USD 120000 US 0 US M
394 392 2022 SE FT Data Analyst 112900 USD 112900 US 100 US M
395 393 2022 SE FT Data Analyst 90320 USD 90320 US 100 US M
396 394 2022 SE FT Data Analytics Manager 145000 USD 145000 US 100 US M
397 395 2022 SE FT Data Analytics Manager 105400 USD 105400 US 100 US M
398 396 2022 MI FT Machine Learning Engineer 80000 EUR 87932 FR 100 DE M
399 397 2022 MI FT Data Engineer 90000 GBP 117789 GB 0 GB M
400 398 2022 SE FT Data Scientist 215300 USD 215300 US 100 US L
401 399 2022 SE FT Data Scientist 158200 USD 158200 US 100 US L
402 400 2022 SE FT Data Engineer 209100 USD 209100 US 100 US L
403 401 2022 SE FT Data Engineer 154600 USD 154600 US 100 US L
404 402 2022 SE FT Data Analyst 115934 USD 115934 US 0 US M
405 403 2022 SE FT Data Analyst 81666 USD 81666 US 0 US M
406 404 2022 SE FT Data Engineer 175000 USD 175000 US 100 US M
407 405 2022 MI FT Data Engineer 75000 GBP 98158 GB 0 GB M
408 406 2022 MI FT Data Analyst 58000 USD 58000 US 0 US S
409 407 2022 SE FT Data Engineer 183600 USD 183600 US 100 US L
410 408 2022 MI FT Data Analyst 40000 GBP 52351 GB 100 GB M
411 409 2022 SE FT Data Scientist 180000 USD 180000 US 100 US M
412 410 2022 MI FT Data Scientist 55000 GBP 71982 GB 0 GB M
413 411 2022 MI FT Data Scientist 35000 GBP 45807 GB 0 GB M
414 412 2022 MI FT Data Engineer 60000 EUR 65949 GR 100 GR M
415 413 2022 MI FT Data Engineer 45000 EUR 49461 GR 100 GR M
416 414 2022 MI FT Data Engineer 60000 GBP 78526 GB 100 GB M
417 415 2022 MI FT Data Engineer 45000 GBP 58894 GB 100 GB M
418 416 2022 SE FT Data Scientist 260000 USD 260000 US 100 US M
419 417 2022 SE FT Data Science Engineer 60000 USD 60000 AR 100 MX L
420 418 2022 MI FT Data Engineer 63900 USD 63900 US 0 US M
421 419 2022 MI FT Machine Learning Scientist 160000 USD 160000 US 100 US L
422 420 2022 MI FT Machine Learning Scientist 112300 USD 112300 US 100 US L
423 421 2022 MI FT Data Science Manager 241000 USD 241000 US 100 US M
424 422 2022 MI FT Data Science Manager 159000 USD 159000 US 100 US M
425 423 2022 SE FT Data Scientist 180000 USD 180000 US 0 US M
426 424 2022 SE FT Data Scientist 80000 USD 80000 US 0 US M
427 425 2022 MI FT Data Engineer 82900 USD 82900 US 0 US M
428 426 2022 SE FT Data Engineer 100800 USD 100800 US 100 US L
429 427 2022 MI FT Data Engineer 45000 EUR 49461 ES 100 ES M
430 428 2022 SE FT Data Scientist 140400 USD 140400 US 0 US L
431 429 2022 MI FT Data Analyst 30000 GBP 39263 GB 100 GB M
432 430 2022 MI FT Data Analyst 40000 EUR 43966 ES 100 ES M
433 431 2022 MI FT Data Analyst 30000 EUR 32974 ES 100 ES M
434 432 2022 MI FT Data Engineer 80000 EUR 87932 ES 100 ES M
435 433 2022 MI FT Data Engineer 70000 EUR 76940 ES 100 ES M
436 434 2022 MI FT Data Engineer 80000 GBP 104702 GB 100 GB M
437 435 2022 MI FT Data Engineer 70000 GBP 91614 GB 100 GB M
438 436 2022 MI FT Data Engineer 60000 EUR 65949 ES 100 ES M
439 437 2022 MI FT Data Engineer 80000 EUR 87932 GR 100 GR M
440 438 2022 SE FT Machine Learning Engineer 189650 USD 189650 US 0 US M
441 439 2022 SE FT Machine Learning Engineer 164996 USD 164996 US 0 US M
442 440 2022 MI FT Data Analyst 40000 EUR 43966 GR 100 GR M
443 441 2022 MI FT Data Analyst 30000 EUR 32974 GR 100 GR M
444 442 2022 MI FT Data Engineer 75000 GBP 98158 GB 100 GB M
445 443 2022 MI FT Data Engineer 60000 GBP 78526 GB 100 GB M
446 444 2022 SE FT Data Scientist 215300 USD 215300 US 0 US L
447 445 2022 MI FT Data Engineer 70000 EUR 76940 GR 100 GR M
448 446 2022 SE FT Data Engineer 209100 USD 209100 US 100 US L
449 447 2022 SE FT Data Engineer 154600 USD 154600 US 100 US L
450 448 2022 SE FT Data Engineer 180000 USD 180000 US 100 US M
451 449 2022 EN FT ML Engineer 20000 EUR 21983 PT 100 PT L
452 450 2022 SE FT Data Engineer 80000 USD 80000 US 100 US M
453 451 2022 MI FT Machine Learning Developer 100000 CAD 78791 CA 100 CA M
454 452 2022 EX FT Director of Data Science 250000 CAD 196979 CA 50 CA L
455 453 2022 MI FT Machine Learning Engineer 120000 USD 120000 US 100 US S
456 454 2022 EN FT Computer Vision Engineer 125000 USD 125000 US 0 US M
457 455 2022 MI FT NLP Engineer 240000 CNY 37236 US 50 US L
458 456 2022 SE FT Data Engineer 105000 USD 105000 US 100 US M
459 457 2022 SE FT Lead Machine Learning Engineer 80000 EUR 87932 DE 0 DE M
460 458 2022 MI FT Business Data Analyst 1400000 INR 18442 IN 100 IN M
461 459 2022 MI FT Data Scientist 2400000 INR 31615 IN 100 IN L
462 460 2022 MI FT Machine Learning Infrastructure Engineer 53000 EUR 58255 PT 50 PT L
463 461 2022 EN FT Financial Data Analyst 100000 USD 100000 US 50 US L
464 462 2022 MI PT Data Engineer 50000 EUR 54957 DE 50 DE L
465 463 2022 EN FT Data Scientist 1400000 INR 18442 IN 100 IN M
466 464 2022 SE FT Principal Data Scientist 148000 EUR 162674 DE 100 DE M
467 465 2022 EN FT Data Engineer 120000 USD 120000 US 100 US M
468 466 2022 SE FT Research Scientist 144000 USD 144000 US 50 US L
469 467 2022 SE FT Data Scientist 104890 USD 104890 US 100 US M
470 468 2022 SE FT Data Engineer 100000 USD 100000 US 100 US M
471 469 2022 SE FT Data Scientist 140000 USD 140000 US 100 US M
472 470 2022 MI FT Data Analyst 135000 USD 135000 US 100 US M
473 471 2022 MI FT Data Analyst 50000 USD 50000 US 100 US M
474 472 2022 SE FT Data Scientist 220000 USD 220000 US 100 US M
475 473 2022 SE FT Data Scientist 140000 USD 140000 US 100 US M
476 474 2022 MI FT Data Scientist 140000 GBP 183228 GB 0 GB M
477 475 2022 MI FT Data Scientist 70000 GBP 91614 GB 0 GB M
478 476 2022 SE FT Data Scientist 185100 USD 185100 US 100 US M
479 477 2022 SE FT Machine Learning Engineer 220000 USD 220000 US 100 US M
480 478 2022 MI FT Data Scientist 200000 USD 200000 US 100 US M
481 479 2022 MI FT Data Scientist 120000 USD 120000 US 100 US M
482 480 2022 SE FT Machine Learning Engineer 120000 USD 120000 AE 100 AE S
483 481 2022 SE FT Machine Learning Engineer 65000 USD 65000 AE 100 AE S
484 482 2022 EX FT Data Engineer 324000 USD 324000 US 100 US M
485 483 2022 EX FT Data Engineer 216000 USD 216000 US 100 US M
486 484 2022 SE FT Data Engineer 210000 USD 210000 US 100 US M
487 485 2022 SE FT Machine Learning Engineer 120000 USD 120000 US 100 US M
488 486 2022 SE FT Data Scientist 230000 USD 230000 US 100 US M
489 487 2022 EN PT Data Scientist 100000 USD 100000 DZ 50 DZ M
490 488 2022 MI FL Data Scientist 100000 USD 100000 CA 100 US M
491 489 2022 EN CT Applied Machine Learning Scientist 29000 EUR 31875 TN 100 CZ M
492 490 2022 SE FT Head of Data 200000 USD 200000 MY 100 US M
493 491 2022 MI FT Principal Data Analyst 75000 USD 75000 CA 100 CA S
494 492 2022 MI FT Data Scientist 150000 PLN 35590 PL 100 PL L
495 493 2022 SE FT Machine Learning Developer 100000 CAD 78791 CA 100 CA M
496 494 2022 SE FT Data Scientist 100000 USD 100000 BR 100 US M
497 495 2022 MI FT Machine Learning Scientist 153000 USD 153000 US 50 US M
498 496 2022 EN FT Data Engineer 52800 EUR 58035 PK 100 DE M
499 497 2022 SE FT Data Scientist 165000 USD 165000 US 100 US M
500 498 2022 SE FT Research Scientist 85000 EUR 93427 FR 50 FR L
501 499 2022 EN FT Data Scientist 66500 CAD 52396 CA 100 CA L
502 500 2022 SE FT Machine Learning Engineer 57000 EUR 62651 NL 100 NL L
503 501 2022 MI FT Head of Data 30000 EUR 32974 EE 100 EE S
504 502 2022 EN FT Data Scientist 40000 USD 40000 JP 100 MY L
505 503 2022 MI FT Machine Learning Engineer 121000 AUD 87425 AU 100 AU L
506 504 2022 SE FT Data Engineer 115000 USD 115000 US 100 US M
507 505 2022 EN FT Data Scientist 120000 AUD 86703 AU 50 AU M
508 506 2022 MI FT Applied Machine Learning Scientist 75000 USD 75000 BO 100 US L
509 507 2022 MI FT Research Scientist 59000 EUR 64849 AT 0 AT L
510 508 2022 EN FT Research Scientist 120000 USD 120000 US 100 US L
511 509 2022 MI FT Applied Data Scientist 157000 USD 157000 US 100 US L
512 510 2022 EN FT Computer Vision Software Engineer 150000 USD 150000 AU 100 AU S
513 511 2022 MI FT Business Data Analyst 90000 CAD 70912 CA 50 CA L
514 512 2022 EN FT Data Engineer 65000 USD 65000 US 100 US S
515 513 2022 SE FT Machine Learning Engineer 65000 EUR 71444 IE 100 IE S
516 514 2022 EN FT Data Analytics Engineer 20000 USD 20000 PK 0 PK M
517 515 2022 MI FT Data Scientist 48000 USD 48000 RU 100 US S
518 516 2022 SE FT Data Science Manager 152500 USD 152500 US 100 US M
519 517 2022 MI FT Data Engineer 62000 EUR 68147 FR 100 FR M
520 518 2022 MI FT Data Scientist 115000 CHF 122346 CH 0 CH L
521 519 2022 SE FT Applied Data Scientist 380000 USD 380000 US 100 US L
522 520 2022 MI FT Data Scientist 88000 CAD 69336 CA 100 CA M
523 521 2022 EN FT Computer Vision Engineer 10000 USD 10000 PT 100 LU M
524 522 2022 MI FT Data Analyst 20000 USD 20000 GR 100 GR S
525 523 2022 SE FT Data Analytics Lead 405000 USD 405000 US 100 US L
526 524 2022 MI FT Data Scientist 135000 USD 135000 US 100 US L
527 525 2022 SE FT Applied Data Scientist 177000 USD 177000 US 100 US L
528 526 2022 MI FT Data Scientist 78000 USD 78000 US 100 US M
529 527 2022 SE FT Data Analyst 135000 USD 135000 US 100 US M
530 528 2022 SE FT Data Analyst 100000 USD 100000 US 100 US M
531 529 2022 SE FT Data Analyst 90320 USD 90320 US 100 US M
532 530 2022 MI FT Data Analyst 85000 USD 85000 CA 0 CA M
533 531 2022 MI FT Data Analyst 75000 USD 75000 CA 0 CA M
534 532 2022 SE FT Machine Learning Engineer 214000 USD 214000 US 100 US M
535 533 2022 SE FT Machine Learning Engineer 192600 USD 192600 US 100 US M
536 534 2022 SE FT Data Architect 266400 USD 266400 US 100 US M
537 535 2022 SE FT Data Architect 213120 USD 213120 US 100 US M
538 536 2022 SE FT Data Analyst 112900 USD 112900 US 100 US M
539 537 2022 SE FT Data Engineer 155000 USD 155000 US 100 US M
540 538 2022 MI FT Data Scientist 141300 USD 141300 US 0 US M
541 539 2022 MI FT Data Scientist 102100 USD 102100 US 0 US M
542 540 2022 SE FT Data Analyst 115934 USD 115934 US 100 US M
543 541 2022 SE FT Data Analyst 81666 USD 81666 US 100 US M
544 542 2022 MI FT Data Engineer 206699 USD 206699 US 0 US M
545 543 2022 MI FT Data Engineer 99100 USD 99100 US 0 US M
546 544 2022 SE FT Data Engineer 130000 USD 130000 US 100 US M
547 545 2022 SE FT Data Engineer 115000 USD 115000 US 100 US M
548 546 2022 SE FT Data Engineer 110500 USD 110500 US 100 US M
549 547 2022 SE FT Data Engineer 130000 USD 130000 US 100 US M
550 548 2022 SE FT Data Analyst 99050 USD 99050 US 100 US M
551 549 2022 SE FT Data Engineer 160000 USD 160000 US 100 US M
552 550 2022 SE FT Data Scientist 205300 USD 205300 US 0 US L
553 551 2022 SE FT Data Scientist 140400 USD 140400 US 0 US L
554 552 2022 SE FT Data Scientist 176000 USD 176000 US 100 US M
555 553 2022 SE FT Data Scientist 144000 USD 144000 US 100 US M
556 554 2022 SE FT Data Engineer 200100 USD 200100 US 100 US M
557 555 2022 SE FT Data Engineer 160000 USD 160000 US 100 US M
558 556 2022 SE FT Data Engineer 145000 USD 145000 US 100 US M
559 557 2022 SE FT Data Engineer 70500 USD 70500 US 0 US M
560 558 2022 SE FT Data Scientist 205300 USD 205300 US 0 US M
561 559 2022 SE FT Data Scientist 140400 USD 140400 US 0 US M
562 560 2022 SE FT Analytics Engineer 205300 USD 205300 US 0 US M
563 561 2022 SE FT Analytics Engineer 184700 USD 184700 US 0 US M
564 562 2022 SE FT Data Engineer 175100 USD 175100 US 100 US M
565 563 2022 SE FT Data Engineer 140250 USD 140250 US 100 US M
566 564 2022 SE FT Data Analyst 116150 USD 116150 US 100 US M
567 565 2022 SE FT Data Engineer 54000 USD 54000 US 0 US M
568 566 2022 SE FT Data Analyst 170000 USD 170000 US 100 US M
569 567 2022 MI FT Data Analyst 50000 GBP 65438 GB 0 GB M
570 568 2022 SE FT Data Analyst 80000 USD 80000 US 100 US M
571 569 2022 SE FT Data Scientist 140000 USD 140000 US 100 US M
572 570 2022 SE FT Data Scientist 210000 USD 210000 US 100 US M
573 571 2022 SE FT Data Scientist 140000 USD 140000 US 100 US M
574 572 2022 SE FT Data Analyst 100000 USD 100000 US 100 US M
575 573 2022 SE FT Data Analyst 69000 USD 69000 US 100 US M
576 574 2022 SE FT Data Scientist 210000 USD 210000 US 100 US M
577 575 2022 SE FT Data Scientist 140000 USD 140000 US 100 US M
578 576 2022 SE FT Data Scientist 210000 USD 210000 US 100 US M
579 577 2022 SE FT Data Analyst 150075 USD 150075 US 100 US M
580 578 2022 SE FT Data Engineer 100000 USD 100000 US 100 US M
581 579 2022 SE FT Data Engineer 25000 USD 25000 US 100 US M
582 580 2022 SE FT Data Analyst 126500 USD 126500 US 100 US M
583 581 2022 SE FT Data Analyst 106260 USD 106260 US 100 US M
584 582 2022 SE FT Data Engineer 220110 USD 220110 US 100 US M
585 583 2022 SE FT Data Engineer 160080 USD 160080 US 100 US M
586 584 2022 SE FT Data Analyst 105000 USD 105000 US 100 US M
587 585 2022 SE FT Data Analyst 110925 USD 110925 US 100 US M
588 586 2022 MI FT Data Analyst 35000 GBP 45807 GB 0 GB M
589 587 2022 SE FT Data Scientist 140000 USD 140000 US 100 US M
590 588 2022 SE FT Data Analyst 99000 USD 99000 US 0 US M
591 589 2022 SE FT Data Analyst 60000 USD 60000 US 100 US M
592 590 2022 SE FT Data Architect 192564 USD 192564 US 100 US M
593 591 2022 SE FT Data Architect 144854 USD 144854 US 100 US M
594 592 2022 SE FT Data Scientist 230000 USD 230000 US 100 US M
595 593 2022 SE FT Data Scientist 150000 USD 150000 US 100 US M
596 594 2022 SE FT Data Analytics Manager 150260 USD 150260 US 100 US M
597 595 2022 SE FT Data Analytics Manager 109280 USD 109280 US 100 US M
598 596 2022 SE FT Data Scientist 210000 USD 210000 US 100 US M
599 597 2022 SE FT Data Analyst 170000 USD 170000 US 100 US M
600 598 2022 MI FT Data Scientist 160000 USD 160000 US 100 US M
601 599 2022 MI FT Data Scientist 130000 USD 130000 US 100 US M
602 600 2022 EN FT Data Analyst 67000 USD 67000 CA 0 CA M
603 601 2022 EN FT Data Analyst 52000 USD 52000 CA 0 CA M
604 602 2022 SE FT Data Engineer 154000 USD 154000 US 100 US M
605 603 2022 SE FT Data Engineer 126000 USD 126000 US 100 US M
606 604 2022 SE FT Data Analyst 129000 USD 129000 US 0 US M
607 605 2022 SE FT Data Analyst 150000 USD 150000 US 100 US M
608 606 2022 MI FT AI Scientist 200000 USD 200000 IN 100 US L

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

View File

@ -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']])

View File

@ -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 не особо улучшает общую картину, поэтому, можно сделать вывод, что следует выбрать другой алгоритм.

Some files were not shown because too many files have changed in this diff Show More