IIS_2023_1/gordeeva_anna_lab_5/laba5.py

58 lines
1.7 KiB
Python
Raw Normal View History

2023-11-18 15:39:33 +04:00
import pandas as pd
import streamlit as st
import statsmodels.api as sm
data = pd.read_csv('data.csv')
size_mapping = {
'15х15': 0,
'20х14': 1,
'20х20': 2,
'21х15': 3,
'30х40': 4,
'30х60': 5,
'38х50': 6,
'40х40': 7,
'40х50': 8,
'40х60': 9
}
genre_mapping = {
"Абстракция": 0,
"Аниме": 1,
"Графити и стрит-арт": 2,
"Животные": 3,
"Историческая живопись": 4,
"Мультфильмы": 5,
"Натюрморт": 6,
"Пейзаж": 7,
"Поп-арт": 8,
"Портрет": 9,
"Религия": 10,
"Ретро и винтаж": 11,
"Спорт": 12,
"Фантастика": 13,
"Фильмы": 14,
"Эротика": 15
}
# Преобразование категориальных значений
data['Жанр'] = data['Жанр'].map(genre_mapping)
data['Размер'] = data['Размер'].map(size_mapping)
columns_to_check = ['Размер', 'Стоимость', 'Средняя оценка', 'Жанр']
data = data.dropna(subset=columns_to_check)
data = data[['Размер', 'Стоимость', 'Средняя оценка', 'Жанр']]
X = data[['Средняя оценка', 'Размер', 'Жанр']]
y = data['Стоимость']
# Добавляем столбец с единичками, так как регрессия Пуассона в statsmodels не добавляет константу автоматически
X = sm.add_constant(X)
# Создание модели и обучение
poisson_model = sm.GLM(y, X, family=sm.families.Poisson())
poisson_results = poisson_model.fit()
# Вывод результатов
st.write(poisson_results.summary())