Spaces:
Sleeping
Sleeping
import streamlit as st | |
import pickle | |
import numpy as np | |
import pandas as pd | |
import ast | |
st.title('Turkish TV Series Classification') | |
years = [i for i in range(1997, 2024)] | |
year = st.selectbox('Yayın tarihi:', years) | |
if year: | |
score_df = pd.read_csv(f'./best_models/best_df.csv', index_col=0) | |
score_df = score_df[score_df['Year'] == year] | |
features = score_df['Selected Features'].values[0] | |
model_name = score_df['Model Name'].values[0] | |
st.write(model_name) | |
model = pickle.load(open(f'./best_models/{year}/{model_name}.pkl', 'rb')) | |
rs = pickle.load(open(f'./best_models/{year}/rs.pkl', 'rb')) | |
day_encoder = pickle.load(open(f'./best_models/{year}/day_encoder.pkl', 'rb')) | |
le = pickle.load(open(f'./best_models/{year}/le.pkl', 'rb')) | |
features_to_models = { | |
'Tarih': -2, | |
'Dizi Adı Uzunluğu': -2, | |
'Dizi Adındaki Kelime Sayısı': -2, | |
'Dizi Adında Bağlaç': -2, | |
'Dizi Adında Yer İsmi': -2, | |
'Dizi Adında Özel İsim': -2, | |
'Aile': -2, | |
'Aksiyon': -2, | |
'Aşk': -2, | |
'Bilim Kurgu': -2, | |
'Dram': -2, | |
'Gençlik': -2, | |
'Gerilim': -2, | |
'Komedi': -2, | |
'Polisiye': -2, | |
'Romantik': -2, | |
'Tarihî': -2, | |
'TRT 1': -2, | |
'Kanal D': -2, | |
'atv': -2, | |
'Star TV': -2, | |
'Show TV': -2, | |
'FOX': -2, | |
'Samanyolu TV': -2, | |
'TV8': -2, | |
'in_turkey': -2, | |
'out_turkey': -2, | |
'book_to_movie': -2, | |
'act_count': -2, | |
'paid_channel': -2, | |
'Publication Day': '?', | |
'summer_series': -2, | |
'duration': -2, | |
'Ödüllü': -2, | |
'Senaristlerin Dizi Sayısı': -2, | |
'Ödüllü Senarist Sayısı': -2, | |
'Senaristlerin Aldığı Ödül Sayısı': -2, | |
'Başrollerin Dizi Sayısı': -2, | |
'Ödüllü Başrol Sayısı': -2, | |
'Başrollerin Aldığı Ödül Sayısı': -2, | |
'Yönetmenlerin Dizi Sayısı': -2, | |
'Ödüllü Yönetmen Sayısı': -2, | |
'Yönetmenlerin Aldığı Ödül Sayısı': -2, | |
'Görüntü Yönetmenlerinin Dizi Sayısı': -2, | |
'Yapım Şirketleri Dizi Sayısı': -2, | |
'Besteci Dizi Sayısı': -2, | |
'on_youtube': -2, | |
'on_facebook': -2, | |
'on_twitter': -2, | |
'on_instagram': -2, | |
'total_sm_accounts': -2, | |
} | |
if "'Tarih'" in features: | |
features_to_models['Tarih'] = year | |
if "'Dizi Adı Uzunluğu'" in features: | |
features_to_models['Dizi Adı Uzunluğu'] = st.number_input('Dizi adı uzunluğu:') | |
if "'Dizi Adındaki Kelime Sayısı'" in features: | |
features_to_models['Dizi Adındaki Kelime Sayısı'] = st.number_input('Dizi adındaki kelime sayısı:') | |
if "'Dizi Adında Bağlaç'" in features: | |
features_to_models['Dizi Adında Bağlaç'] = st.number_input('Dizi adında bağlaç var mı ? (0-Hayır, 1-Evet):') | |
if "'Dizi Adında Yer İsmi'" in features: | |
features_to_models[''] = st.number_input('Dizi adında yer ismi var mı ? (0-Hayır, 1-Evet):') | |
if "'Dizi Adında Özel İsim'" in features: | |
features_to_models['Dizi Adında Özel İsim'] = st.number_input('Dizi adında özel isim var mı ? (0-Hayır, 1-Evet):') | |
if "'Aile'" in features: | |
features_to_models['Aile'] = st.number_input('Aile türünde mi ? (0-Hayır, 1-Evet):') | |
if "'Aksiyon'" in features: | |
features_to_models['Aksiyon'] = st.number_input('Aksiyon türünde mi ? (0-Hayır, 1-Evet):') | |
if "'Aşk'" in features: | |
features_to_models['Aşk'] = st.number_input('Aşk türünde mi ? (0-Hayır, 1-Evet):') | |
if "'Bilim Kurgu'" in features: | |
features_to_models['Bilim Kurgu'] = st.number_input('Bilim Kurgu türünde mi ? (0-Hayır, 1-Evet):') | |
if "'Dram'" in features: | |
features_to_models['Dram'] = st.number_input('Dram türünde mi ? (0-Hayır, 1-Evet):') | |
if "'Gençlik'" in features: | |
features_to_models['Gençlik'] = st.number_input('Gençlik türünde mi ? (0-Hayır, 1-Evet):') | |
if "'Gerilim'" in features: | |
features_to_models['Gerilim'] = st.number_input('Gerilim türünde mi ? (0-Hayır, 1-Evet):') | |
if "'Komedi'" in features: | |
features_to_models['Komedi'] = st.number_input('Komedi türünde mi ? (0-Hayır, 1-Evet):') | |
if "'Polisiye'" in features: | |
features_to_models['Polisiye'] = st.number_input('Polisiye türünde mi ? (0-Hayır, 1-Evet):') | |
if "'Romantik'" in features: | |
features_to_models['Romantik'] = st.number_input('Romantik türünde mi ? (0-Hayır, 1-Evet):') | |
if "'Tarihî'" in features: | |
features_to_models['Tarihî'] = st.number_input('Tarihî türünde mi ? (0-Hayır, 1-Evet):') | |
if "'TRT 1'" in features: | |
features_to_models['TRT 1'] = st.number_input('TRT 1 kanalında mı yayınlanıyor ? (0-Hayır, 1-Evet):') | |
if "'Kanal D'" in features: | |
features_to_models['Kanal D'] = st.number_input('Kanal D kanalında mı yayınlanıyor ? (0-Hayır, 1-Evet):') | |
if "'atv'" in features: | |
features_to_models['atv'] = st.number_input('atv kanalında mı yayınlanıyor ? (0-Hayır, 1-Evet):') | |
if "'Star TV'" in features: | |
features_to_models['Star TV'] = st.number_input('Star TV kanalında mı yayınlanıyor ? (0-Hayır, 1-Evet):') | |
if "'Show TV'" in features: | |
features_to_models['Show TV'] = st.number_input('Show TV kanalında mı yayınlanıyor ? (0-Hayır, 1-Evet):') | |
if "'FOX'" in features: | |
features_to_models['FOX'] = st.number_input('FOX kanalında mı yayınlanıyor ? (0-Hayır, 1-Evet):') | |
if "'Samanyolu TV'" in features: | |
features_to_models['Samanyolu TV'] = st.number_input('Samanyolu TV kanalında mı yayınlanıyor ? (0-Hayır, 1-Evet):') | |
if "'TV8'" in features: | |
features_to_models['TV8'] = st.number_input('TV8 kanalında mı yayınlanıyor ? (0-Hayır, 1-Evet):') | |
if "'in_turkey'" in features: | |
features_to_models['in_turkey'] = st.number_input('Türkiyede mi çekildi ? (0-Hayır, 1-Evet):') | |
if "'out_turkey'" in features: | |
features_to_models['out_turkey'] = st.number_input('Yurtdışında mı çekildi ? (0-Hayır, 1-Evet):') | |
if "'book_to_movie'" in features: | |
features_to_models['book_to_movie'] = st.number_input('Uyarlama mı ? (0-Hayır, 1-Evet):') | |
if "'act_count'" in features: | |
features_to_models['act_count'] = st.number_input('Başroldeki aktör sayısı:') | |
if "'paid_channel'" in features: | |
features_to_models['paid_channel'] = st.number_input('Ücretli bir kanalda mı yayınlanıyor ? (0-Hayır, 1-Evet):') | |
if "'Publication Day'" in features: | |
features_to_models['Publication Day'] = st.text_input('Yayınlandığı gün (İngilizce olarak girin.):') | |
if "'summer_series'" in features: | |
features_to_models['summer_series'] = st.number_input('Yaz dizisi (Temmuz, Ağustos) mi ? (0-Hayır, 1-Evet):') | |
if "'duration'" in features: | |
features_to_models['duration'] = st.number_input('Ortalama bölüm uzunluğu:') | |
if "'Ödüllü'" in features: | |
features_to_models['Ödüllü'] = st.number_input('Altın kelebek ödülü aldı mı ?:') | |
if "'Senaristlerin Dizi Sayısı'" in features: | |
features_to_models['Senaristlerin Dizi Sayısı'] = st.number_input('Senaristlerin yazdığı ortalama dizi sayısı:') | |
if "'Ödüllü Senarist Sayısı'" in features: | |
features_to_models['Ödüllü Senarist Sayısı'] = st.number_input('Ödüllü senarist sayısı:') | |
if "'Senaristlerin Aldığı Ödül Sayısı'" in features: | |
features_to_models['Senaristlerin Aldığı Ödül Sayısı'] = st.number_input('Senaristlerin aldığı ortalama ödül sayısı:') | |
if "'Başrollerin Dizi Sayısı'" in features: | |
features_to_models['Başrollerin Dizi Sayısı'] = st.number_input('Başrollerin ortalama dizi sayısı:') | |
if "'Ödüllü Başrol Sayısı'" in features: | |
features_to_models['Ödüllü Başrol Sayısı'] = st.number_input('Ödüllü başrol sayısı:') | |
if "'Başrollerin Aldığı Ödül Sayısı'" in features: | |
features_to_models['Başrollerin Aldığı Ödül Sayısı'] = st.number_input('Başrollerin aldığı ortalama ödül sayısı:') | |
if "'Yönetmenlerin Dizi Sayısı'" in features: | |
features_to_models['Yönetmenlerin Dizi Sayısı'] = st.number_input('Yönetmenlerin ortalama dizi sayısı:') | |
if "'Ödüllü Yönetmen Sayısı'" in features: | |
features_to_models['Ödüllü Yönetmen Sayısı'] = st.number_input('Ödüllü yönetmen sayısı:') | |
if "'Yönetmenlerin Aldığı Ödül Sayısı'" in features: | |
features_to_models['Yönetmenlerin Aldığı Ödül Sayısı'] = st.number_input('Yönetmenlerin aldığı ortalama ödül sayısı:') | |
if "'Görüntü Yönetmenlerinin Dizi Sayısı'" in features: | |
features_to_models['Görüntü Yönetmenlerinin Dizi Sayısı'] = st.number_input('Görüntü yönetmenlerinin ortalama dizi sayısı:') | |
if "'Yapım Şirketleri Dizi Sayısı'" in features: | |
features_to_models['Yapım Şirketleri Dizi Sayısı'] = st.number_input('Yapım şirketlerinin ortalama dizi sayısı:') | |
if "'Besteci Dizi Sayısı'" in features: | |
features_to_models['Besteci Dizi Sayısı'] = st.number_input('Bestecilerin ortalama dizi sayısı:') | |
if "'on_youtube'" in features: | |
features_to_models['on_youtube'] = st.number_input('Youtube hesabı var mı ? (0-Hayır, 1-Evet):') | |
if "'on_facebook'" in features: | |
features_to_models['on_facebook'] = st.number_input('Facebook hesabı var mı ? (0-Hayır, 1-Evet):') | |
if "'on_twitter'" in features: | |
features_to_models['on_twitter'] = st.number_input('Twitter hesabı var mı ? (0-Hayır, 1-Evet):') | |
if "'on_instagram'" in features: | |
features_to_models['on_instagram'] = st.number_input('Instagram hesabı var mı ? (0-Hayır, 1-Evet):') | |
if "'total_sm_accounts'" in features: | |
features_to_models['total_sm_accounts'] = st.number_input('Toplam sosyal medya hesabı sayısı:') | |
if st.button('Tahmin Et'): | |
test = pd.DataFrame(features_to_models, index=[0]) | |
test_df_names = [] | |
for key, value in features_to_models.items(): | |
if value != -2 and value != '?': | |
test_df_names.append(key) | |
#st.write(test_df) | |
numerical_variables = [col for col in test.columns if pd.api.types.is_numeric_dtype(test[col])] | |
if features_to_models['Publication Day'] != '?': | |
test['Publication Day'] = day_encoder.transform(test['Publication Day'].values.reshape(-1, 1)) | |
test[numerical_variables] = rs.transform(test[numerical_variables]) | |
test_small = test[test_df_names] | |
#st.dataframe(test_small) | |
predicted = model.predict(test_small) | |
prediction = le.classes_[predicted] | |
st.success(f'Tahminen bu dizi {prediction}') |