faskhutdinov_idris_lab_7 is ready #310

Open
CptNemo wants to merge 5 commits from faskhutdinov_idris_lab_7 into main
23 changed files with 184634 additions and 0 deletions

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,84 @@
# Лабораторная работа №3. Деревья решений
## 6 вариант
### Задание:
Решите с помощью библиотечной реализации дерева решений
задачу из лабораторной работы «Веб-сервис «Дерево решений» по предмету
«Методы искусственного интеллекта» на 99% ваших данных. Проверьте
работу модели на оставшемся проценте, сделайте вывод
В моем случае данными является датасет о продаже автомобилей. В датасете представлены следующие столбцы:
* id
* Company Name
* Model Name
* Price
* Model Year
* Location
* Mileage
* Engine Type
* Engine Capacity
* Color
* Assembly
* Body Type
* Transmission Type
* Registration Status
### Как запустить лабораторную
1. Запустить файл main.py
### Используемые технологии
1. Библиотека pandas
2. Библиотека scikit-learn
3. Python
4. IDE PyCharm
### Описание лабораторной работы
Программа загружает данные из файла Clean_Data_pakwheels.csv, после чего выбирает необходимые для создания модели столбцы.
Выбранные столбцы разделяются на целевую переменную (Y) и признаки (X). Некоторые столбцы в датасете представлены в виде текстовых значений, поэтому мы представляем их как численные значения
Затем программа обучает модель, выполняет прогнозы и оценивает точность. В консоль выводятся признаки по их важности
Целевой признак - Registration Status
### Результат
Accuracy: 0.9327548806941431
* Признак Важность
* 1 Mileage 0.332722
* 2 Price 0.332358
* 0 Model Year 0.175522
* 34 Transmission Type_Automatic 0.086699
* 13 Company Name_Honda 0.021243
* 31 Company Name_Toyota 0.015743
* 30 Company Name_Suzuki 0.008819
* 10 Company Name_Daihatsu 0.007749
* 25 Company Name_Nissan 0.007616
* 4 Company Name_Audi 0.003018
* 23 Company Name_Mercedes 0.001886
* 22 Company Name_Mazda 0.001800
* 18 Company Name_KIA 0.001416
* 24 Company Name_Mitsubishi 0.001044
* 29 Company Name_Subaru 0.000787
* 5 Company Name_BMW 0.000458
* 19 Company Name_Land 0.000407
* 27 Company Name_Range 0.000332
* 26 Company Name_Porsche 0.000331
* 35 Transmission Type_Manual 0.000050
* 20 Company Name_Lexus 0.000000
* 21 Company Name_MINI 0.000000
* 9 Company Name_Daewoo 0.000000
* 8 Company Name_DFSK 0.000000
* 14 Company Name_Hummer 0.000000
* 7 Company Name_Chevrolet 0.000000
* 11 Company Name_FAW 0.000000
* 17 Company Name_Jeep 0.000000
* 28 Company Name_SsangYong 0.000000
* 16 Company Name_Jaguar 0.000000
* 6 Company Name_Chery 0.000000
* 15 Company Name_Hyundai 0.000000
* 32 Company Name_United 0.000000
* 33 Company Name_Volvo 0.000000
* 3 Company Name_Adam 0.000000
* 12 Company Name_Fiat 0.000000
### Вывод
Исходя из результатов работы программы можно сделать вывод, что наиболее важным признаком, отвечающим за
то, зарегистрирована машина или нет, является её пробег, а так же её цена на рынке. Точность модели составляет 93%, что говорит о том,
что она классифицирует данные при заданных условиях с высокой точностью.

View File

@ -0,0 +1,39 @@
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
def main():
# Чтение данных из csv файла
data = pd.read_csv("Clean_Data_pakwheels.csv")
# Выбор необходимых для создания модели столбцов
selected_columns = ['Company Name', 'Model Year', 'Mileage', 'Transmission Type', 'Price', 'Registration Status']
data = data[selected_columns]
# Разделение данных на признаки (X) и целевую переменную (y), целевая переменная в данном случае Registration Status
y = data['Registration Status']
data = data.drop(columns=['Registration Status'])
# В связи с тем, что некоторые столбцы представляют из себя текстовые значения, мы представляем их в виде числовых значений
X = pd.get_dummies(data)
# Тестовый набор в данном случае - 1%, обучающий - 99%
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.01)
model = DecisionTreeClassifier()
model.fit(X_train, y_train)
# Предсказание на тестовом наборе
y_pred = model.predict(X_test)
# Оценка точности модели
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy}")
# Важность признаков
importance = pd.DataFrame({'Признак': X.columns, 'Важность': model.feature_importances_})
importance = importance.sort_values(by='Важность', ascending=False)
print(importance)
main()

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,45 @@
# Лабораторная работа №4. Кластеризация
## 2 вариант(27 % 2 = 2)
### Задание:
Использовать метод кластеризации по варианту для данных из таблицы
1 по варианту (таблица 9), самостоятельно сформулировав задачу.
Интерпретировать результаты и оценить, насколько хорошо он подходит для
решения сформулированной вами задачи.
Используемый метод: linkage
В моем случае данными является датасет о продаже автомобилей. В датасете представлены следующие столбцы:
* id
* Company Name
* Model Name
* Price
* Model Year
* Location
* Mileage
* Engine Type
* Engine Capacity
* Color
* Assembly
* Body Type
* Transmission Type
* Registration Status
### Как запустить лабораторную
1. Запустить файл main.py
### Используемые технологии
1. Библиотека matplotlib
2. Библиотека scikit-learn
3. Библиотека pandas
3. Python
4. IDE PyCharm
### Описание лабораторной работы
Программа выполняет кластеризацию данных методом linkage, используя для своей работы признаки "Стоимость" и "Пробег"
Для работы программы выбирается часть данных(Ввиду того, что работы программы на полном объеме данных требует больших вычислительных мощностей), после чего они стандартизируются,
а затем к ним применяется кластеризация. После чего строится график, который показывается на экране, а так же сохраняется в папке проекта.
Скриншот работы программы представлен в папке проекта.
### Результат
Кластеризация представленного датасета позволяет увидеть схожие пары "Стоимость"-"Пробег", что позволяет выделить более или менее схожие автомобили.

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

View File

@ -0,0 +1,32 @@
import pandas as pd
from sklearn.cluster import AgglomerativeClustering
from sklearn.preprocessing import StandardScaler
import matplotlib.pyplot as plt
# Чтение данных из датасета
data = pd.read_csv("Clean Data_pakwheels.csv")
# Уменьшение размера данных для оптимизации работы программы
data = data.sample(frac=.01)
# Для кластеризации выбираются признаки "Стоимость" и "Пробег"
features = ['Price','Mileage']
cluster_data = data[features]
X = data[features]
# Стандартизация данных
standartSc = StandardScaler()
X_scaled = standartSc.fit_transform(X)
# Кластеризация с разделением на 4 кластера
cluster = AgglomerativeClustering(n_clusters=4, linkage='ward')
data['cluster'] = cluster.fit_predict(X_scaled)
# Построение графика
plt.scatter(X_scaled[:, 0], X_scaled[:, 1], c=data['cluster'])
plt.xlabel('Стоимость')
plt.ylabel('Пробег')
plt.title('Кластеризация')
plt.savefig(f"linkage.png")
plt.show()

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,45 @@
# Лабораторная работа №5. Регрессия
## 2 вариант(27 % 5 = 2)
### Задание:
Использовать регрессию по варианту для данных из таблицы 1 по
варианту (таблица 10), самостоятельно сформулировав задачу. Оценить,
насколько хорошо она подходит для решения сформулированной вами задачи.
Используемый метод: Логистическая регрессия
В моем случае данными является датасет о продаже автомобилей. В датасете представлены следующие столбцы:
* id
* Company Name
* Model Name
* Price
* Model Year
* Location
* Mileage
* Engine Type
* Engine Capacity
* Color
* Assembly
* Body Type
* Transmission Type
* Registration Status
### Как запустить лабораторную
1. Запустить файл main.py
### Используемые технологии
1. Библиотека matplotlib
2. Библиотека scikit-learn
3. Библиотека pandas
3. Python
4. IDE PyCharm
### Описание лабораторной работы
Программа выполняет решение задачи регрессии методом логистической регрессии, используя для своей работы признаки "Registration Status", 'Model Year', 'Mileage'. Предсказывается вероятность регистрации автомобиля на основе данных о его пробеге и годе выпуска.
Для работы программы выбирается часть данных(Ввиду того, что работы программы на полном объеме данных требует больших вычислительных мощностей), затем строковые значения преобразуются в числовые. Данные разделяются на тестовый и тренировочный наборы,
строится модель логистической регрессии, после чего оценивается её качество.
После чего строится график, который показывается на экране, а так же сохраняется в папке проекта.
Точность: 0.04852728150651859
Скриншот работы программы представлен в папке проекта.
### Результат
Модель логистической регрессии показала весьма низкие результаты, в связи с этим можно сделать вывод ,что она не подходит для решения сформулированной задачи.

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

@ -0,0 +1,55 @@
from sklearn.linear_model import LogisticRegression
from sklearn.preprocessing import StandardScaler, LabelEncoder
from sklearn.metrics import accuracy_score, classification_report, confusion_matrix
import matplotlib.pyplot as plt
import pandas as pd
from sklearn.model_selection import train_test_split
def main():
# Чтение данных из датасета
data = pd.read_csv('Clean Data_pakwheels.csv')
# Выбор переменных для модели
features = ['Registration Status', 'Model Year', 'Mileage']
# Выбор лишь части значений для оптимизации работы программы
data = data.sample(frac=.1)
# Отбор нужных столбцов
df = data[features]
# Преобразование строковых значений о регистрации авто в числовые
labelencoder = LabelEncoder()
df['Registration Status'] = labelencoder.fit_transform(df['Registration Status'])
# Разделение на признаки и целевую переменную, представленную как Mileage
X = df.drop('Mileage', axis=1)
y = df['Mileage']
# Разделение данных на тренировочный и тестовый наборы
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.9, random_state=0)
# Создание и обучение логистической регрессии
model = LogisticRegression()
model.fit(X_train, y_train)
# Предсказание на тестовом наборе
y_pred = model.predict(X_test)
# Оценка качества модели
accuracy = accuracy_score(y_test, y_pred)
class_report = classification_report(y_test, y_pred)
print(f'Точность: {accuracy}')
print(f'Классификация:\n{class_report}')
# Визуализация результатов
plt.scatter(X_test['Registration Status'], y_test, color='red', label='Actual')
plt.scatter(X_test['Registration Status'], y_pred, color='green', label='Predicted', marker='x')
plt.xlabel('Registration Status')
plt.ylabel('Mileage')
plt.legend()
plt.savefig(f"image.png")
plt.show()
main()

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,46 @@
# Лабораторная работа №6. Нейронная сеть
## 1 вариант(27 % 2 = 1)
### Задание:
Использовать нейронную сеть (четные варианты MLPRegressor,
нечетные MLPClassifier) для данных из таблицы 1 по варианту,
самостоятельно сформулировав задачу. Интерпретировать результаты и
оценить, насколько хорошо она подходит для решения сформулированной
вами задачи.
Используемый метод: MLPClassifier
В моем случае данными является датасет о продаже автомобилей. В датасете представлены следующие столбцы:
* id
* Company Name
* Model Name
* Price
* Model Year
* Location
* Mileage
* Engine Type
* Engine Capacity
* Color
* Assembly
* Body Type
* Transmission Type
* Registration Status
### Как запустить лабораторную
1. Запустить файл main.py
### Используемые технологии
1. Библиотека matplotlib
2. Библиотека scikit-learn
3. Библиотека pandas
3. Python
4. IDE PyCharm
### Описание лабораторной работы
Программа выполняет создание и обучение нейронной сети с помощью MLPClassifier, после чего
Для работы программы выбирается часть данных(Ввиду того, что работы программы на полном объеме данных требует больших вычислительных мощностей). Данные разделяются на тестовый и тренировочный наборы,
строится модель нейронной сети, которая обучается на тестовом наборе данных, после чего оценивается её качество на оставшихся данных.
После чего строится график, который показывается на экране, а так же сохраняется в папке проекта.
Точность: 0.9283387622149837
Скриншот работы программы представлен в папке проекта.
### Результат
Ввиду того, что точность работы модели составляет 0.9283387622149837, это может говорить о том, что нейронная сеть хорошо справляется в предсказании статуса регистрации автомобиля.

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -0,0 +1,46 @@
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.neural_network import MLPClassifier
from sklearn.preprocessing import StandardScaler, LabelEncoder
from sklearn.metrics import accuracy_score, classification_report, confusion_matrix
def main():
# Чтение данных из файла
data = pd.read_csv('Clean Data_pakwheels.csv')
# Выбор лишь части значений для оптимизации работы программы
data = data.sample(frac=.1)
# Выбор необходимых столбцов
features = ['Model Year', 'Mileage', 'Registration Status']
# Выбор данных из датасета
df = data[features]
# Split into features and target variable
y = df['Registration Status']
X = df.drop('Registration Status', axis=1)
# Разделение на обучающую и тестовую выборки
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
# Создание и обучение модели нейросети MLPClassifier
model = MLPClassifier(random_state=0)
model.fit(X_train, y_train)
# Предсказания на тестовом наборе
y_pred = model.predict(X_test)
# Оценка модели
accuracy = accuracy_score(y_test, y_pred)
conf_matrix = confusion_matrix(y_test, y_pred)
class_report = classification_report(y_test, y_pred)
print(f'Accuracy: {accuracy}')
print(f'Classification Report:\n{class_report}')
# Создание графика, его отображение и сохранение
plt.hist(y_pred, bins=np.arange(3) - 0.5, alpha=0.75, color='Red', label='Предсказываемые')
plt.hist(y_test, bins=np.arange(3) - 0.5, alpha=0.5, color='Black', label='Действительные')
plt.xticks([0, 1], ['Зарегистрирована', 'Не зарегистрирована'])
plt.legend()
plt.savefig(fname = 'image.png')
plt.show()
main()

View File

@ -0,0 +1,42 @@
# Лабораторная работа №7. Рекуррентная нейронная сеть и задача генерации текста
## 1 вариант(27 % 2 = 1)
### Задание:
Использовать регрессию по варианту для данных из таблицы 1 по
варианту (таблица 10), самостоятельно сформулировав задачу. Оценить,
насколько хорошо она подходит для решения сформулированной вами задачи.
Используемый текст: англоязычный
### Как запустить лабораторную
1. Запустить файл main.py
### Используемые технологии
1. Библиотека tensorflow
2. Библиотека keras
3. Python
4. IDE PyCharm
### Описание лабораторной работы
Программа работает с библиотеками tensorflow и keras: изначально считывает текст, после чего производит процесс токенизации текста, а так же преобразует его в числовые последовательности.
После чего строится и обучается модель. В конце происходит генерация текста и запись его в файлы. Изначально обрабатывается текст на русском языке(Булгаков, "Мастер и Маргарита"), затем на английском(Оруэлл, "1984").
Среднее время прохождения одного цикла при работе с русскоязычным текстом - 2,5 с
Среднее время прохождения одного цикла при работе с англоязычным текстом - 0,3 с
### Результат
#### Оригинал русскоязычного текста:
Абрикосовая дала обильную желтую пену, и в воздухе запахло парикмахерской. Напившись, литераторы немедленно начали икать, расплатились и уселись на скамейке лицом к пруду и спиной к Бронной.
Тут приключилась вторая странность, касающаяся одного Берлиоза. Он внезапно перестал икать, сердце его стукнуло и на мгновенье куда-то провалилось, потом вернулось, но с тупой иглой, засевшей в нем. Кроме того, Берлиоза охватил необоснованный, но столь сильный страх, что ему захотелось тотчас же бежать с Патриарших без оглядки. Берлиоз тоскливо оглянулся, не понимая, что его напугало. Он побледнел, вытер лоб платком, подумал: «Что это со мной? Этого никогда не было... сердце шалит... я переутомился. Пожалуй, пора бросить все к черту и в Кисловодск...»
И тут знойный воздух сгустился перед ним, и соткался из этого воздуха прозрачный гражданин престранного вида. На маленькой головке жокейский картузик, клетчатый кургузый воздушный же пиджачок... Гражданин ростом в сажень, но в плечах узок, худ неимоверно, и физиономия, прошу заметить, глумливая.
Жизнь Берлиоза складывалась так, что к необыкновенным явлениям он не привык. Еще более побледнев, он вытаращил глаза и в смятении подумал: «Этого не может быть!..»
Но это, увы, было, и длинный, сквозь которого видно, гражданин, не касаясь земли, качался перед ним и влево и вправо.
Тут ужас до того овладел Берлиозом, что он закрыл глаза. А когда он их открыл, увидел, что все кончилось, марево растворилось, клетчатый исчез, а заодно и тупая игла выскочила из сердца.
#### Сгенерированный русскоязычный текст:
Абрикосовая дала обильную желтую пену и в воздухе запахло парикмахерской напившись литераторы немедленно начали икать расплатились и уселись на скамейке лицом к пруду и спиной к бронной тут приключилась вторая странность касающаяся одного берлиоза он внезапно перестал икать сердце его стукнуло и на мгновенье куда то провалилось потом вернулось но с тупой иглой засевшей в нем кроме того берлиоза охватил необоснованный но столь сильный страх что ему захотелось тотчас же бежать с патриарших без оглядки берлиоз тоскливо оглянулся не понимая что его напугало он побледнел вытер лоб платком подумал «что это со мной этого никогда не было сердце шалит я переутомился
#### Оригинал англоязычного текста:
It was a bright, cold day in April and the clocks were striking thirteen. Winston Smith hurried home to Victory Mansions with his head down to escape the terrible wind. A cloud of dust blew inside with him, and the hall smelled of dust and yesterday's food.
At the end of the hall, a poster covered one wall. It showed an enormous face, more than a metre wide: the face of a handsome man of about forty-five, with a large, black moustache. The man's eyes seemed to follow Winston as he moved. Below the face were the words BIG BROTHER IS WATCHING YOU.
Winston went up the stairs. He did not even try the lift. It rarely worked and at the moment the electricity was switched off during the day to save money for Hate Week. The flat was on the seventh floor and Winston, who was thirty-nine and had a bad knee, went slowly, resting several times on the way. Winston was a small man and looked even smaller in the blue overalls of the Party. His hair was fair and the skin on his face, which used to be pink, was red and rough from cheap soap, old razor blades and the cold of the winter that had just ended.
#### Сгенерированный англоязычный текст:
It was a bright cold day to save the face were the big brother brother is brother watching you watching you watching watching you watching watching you you a small moustache the face were the words big brother is watching you you you you watching you watching watching watching you you a bright cold day to save the face were the big brother brother is brother watching you watching you watching watching you watching watching you you a small moustache the face were the words big brother is watching you you you you watching you watching watching watching you you a
В результате работы программы была успешно создана и обучена рекуррентная нейронная сеть для генерации текста.

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

View File

@ -0,0 +1,3 @@
It was a bright, cold day in April and the clocks were striking thirteen. Winston Smith hurried home to Victory Mansions with his head down to escape the terrible wind. A cloud of dust blew inside with him, and the hall smelled of dust and yesterday's food.
At the end of the hall, a poster covered one wall. It showed an enormous face, more than a metre wide: the face of a handsome man of about forty-five, with a large, black moustache. The man's eyes seemed to follow Winston as he moved. Below the face were the words BIG BROTHER IS WATCHING YOU.
Winston went up the stairs. He did not even try the lift. It rarely worked and at the moment the electricity was switched off during the day to save money for Hate Week. The flat was on the seventh floor and Winston, who was thirty-nine and had a bad knee, went slowly, resting several times on the way. Winston was a small man and looked even smaller in the blue overalls of the Party. His hair was fair and the skin on his face, which used to be pink, was red and rough from cheap soap, old razor blades and the cold of the winter that had just ended.

View File

@ -0,0 +1 @@
It was a bright cold day to save the face were the big brother brother is brother watching you watching you watching watching you watching watching you you a small moustache the face were the words big brother is watching you you you you watching you watching watching watching you you a bright cold day to save the face were the big brother brother is brother watching you watching you watching watching you watching watching you you a small moustache the face were the words big brother is watching you you you you watching you watching watching watching you you a

View File

@ -0,0 +1 @@
Абрикосовая дала обильную желтую пену и в воздухе запахло парикмахерской напившись литераторы немедленно начали икать расплатились и уселись на скамейке лицом к пруду и спиной к бронной тут приключилась вторая странность касающаяся одного берлиоза он внезапно перестал икать сердце его стукнуло и на мгновенье куда то провалилось потом вернулось но с тупой иглой засевшей в нем кроме того берлиоза охватил необоснованный но столь сильный страх что ему захотелось тотчас же бежать с патриарших без оглядки берлиоз тоскливо оглянулся не понимая что его напугало он побледнел вытер лоб платком подумал «что это со мной этого никогда не было сердце шалит я переутомился

View File

@ -0,0 +1,97 @@
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Embedding, LSTM, Dense
import numpy as np
# Загрузка и подготовка данных
with open('russian_text.txt', 'r', encoding='cp1251') as file:
russian_text = file.read()
# Токенизация текста
tokenizer = tf.keras.preprocessing.text.Tokenizer()
tokenizer.fit_on_texts([russian_text])
total_words = len(tokenizer.word_index) + 1
# Преобразование текста в числовые последовательности
input_sequences = []
for line in russian_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 = np.array(tf.keras.preprocessing.sequence.pad_sequences(input_sequences, maxlen=max_sequence_length,
padding='pre'))
predictors, label = input_sequences[:, :-1], input_sequences[:, -1]
# Построение и обучение модели
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')
model.fit(predictors, label, epochs=150, batch_size=64)
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 = tf.keras.preprocessing.sequence.pad_sequences([token_list], maxlen=max_sequence_length - 1,
padding='pre')
predicted = np.argmax(model.predict(token_list, verbose=0), 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
# Генерация и сохранение русскоязычного текста
russian_generated_text = generate_text('Абрикосовая', next_words=100, model=model, max_sequence_length=max_sequence_length)
with open('generated_russian_text.txt', 'w', encoding='utf-8') as file:
file.write(russian_generated_text)
# Загрузка и подготовка данных
with open('english_text.txt', 'r', encoding='utf-8') as file:
english_text = file.read()
# Токенизация текста
tokenizer = tf.keras.preprocessing.text.Tokenizer()
tokenizer.fit_on_texts([english_text])
total_words = len(tokenizer.word_index) + 1
# Преобразование текста в числовые последовательности
input_sequences = []
for line in english_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 = np.array(tf.keras.preprocessing.sequence.pad_sequences(input_sequences, maxlen=max_sequence_length,
padding='pre'))
predictors, label = input_sequences[:, :-1], input_sequences[:, -1]
# Построение и обучение модели
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')
model.fit(predictors, label, epochs=150, batch_size=64)
# Генерация и сохранение англоязычного текста
english_generated_text = generate_text('It', next_words=100, model=model, max_sequence_length=max_sequence_length)
with open('generated_english_text.txt', 'w', encoding='utf-8') as file:
file.write(english_generated_text)

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

View File

@ -0,0 +1,6 @@
Абрикосовая дала обильную желтую пену, и в воздухе запахло парикмахерской. Напившись, литераторы немедленно начали икать, расплатились и уселись на скамейке лицом к пруду и спиной к Бронной.
Тут приключилась вторая странность, касающаяся одного Берлиоза. Он внезапно перестал икать, сердце его стукнуло и на мгновенье куда-то провалилось, потом вернулось, но с тупой иглой, засевшей в нем. Кроме того, Берлиоза охватил необоснованный, но столь сильный страх, что ему захотелось тотчас же бежать с Патриарших без оглядки. Берлиоз тоскливо оглянулся, не понимая, что его напугало. Он побледнел, вытер лоб платком, подумал: «Что это со мной? Этого никогда не было... сердце шалит... я переутомился. Пожалуй, пора бросить все к черту и в Кисловодск...»
И тут знойный воздух сгустился перед ним, и соткался из этого воздуха прозрачный гражданин престранного вида. На маленькой головке жокейский картузик, клетчатый кургузый воздушный же пиджачок... Гражданин ростом в сажень, но в плечах узок, худ неимоверно, и физиономия, прошу заметить, глумливая.
Жизнь Берлиоза складывалась так, что к необыкновенным явлениям он не привык. Еще более побледнев, он вытаращил глаза и в смятении подумал: «Этого не может быть!..»
Но это, увы, было, и длинный, сквозь которого видно, гражданин, не касаясь земли, качался перед ним и влево и вправо.
Тут ужас до того овладел Берлиозом, что он закрыл глаза. А когда он их открыл, увидел, что все кончилось, марево растворилось, клетчатый исчез, а заодно и тупая игла выскочила из сердца.