58 lines
1.7 KiB
Python
58 lines
1.7 KiB
Python
|
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())
|