GuessRedditDateSumo/linear_regression.py
2020-05-05 17:30:04 +02:00

40 lines
1.7 KiB
Python

import csv
import pickle
from sklearn.decomposition import TruncatedSVD
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.feature_extraction.text import CountVectorizer
import sklearn
import pandas as pd
import math
import re
from sklearn.linear_model import LinearRegression
def train():
created_dictionary=pd.read_csv("train/in.tsv", delimiter="\t", header=None, names=["txt"], quoting=csv.QUOTE_NONE)
#Pandas - służy do analizy danych (wszystko to co umożliwia SQL, Excel itd.)
#delimiter - alternatywny argument do separacji, header - numer wiersza, który ma być traktowany jako nazwa
#names - określenie nazw kolumn jak ich nie ma dajemy None
#quoting - służy do interpretacji pól
#chunksize - służy by ładować duże ilości danych
created_dictionary = created_dictionary["txt"][:20000]
expected_dictionary=pd.read_csv("train/expected.tsv", header=None)
expected_dictionary = expected_dictionary[:20000]
#tfidf = TfidfVectorizer(min_df=1,stop_words='english')
tfidf = TfidfVectorizer(stop_words='english', ngram_range=(1,1)) #Konwertuje tekst w dokumencie do macierzy tfidf , ngram_range - lb słów w sekwencji
x = tfidf.fit_transform(created_dictionary)
#PCA - principal component analysis
pca = TruncatedSVD(n_components=100) # Liniowa redukcja wymiarów , n_components - Pożądana wymiarowość danych wyjściowych
x_pca = pca.fit_transform(x)
l_regression = LinearRegression()
l_regression.fit(x_pca,expected_dictionary)
with open('l_regression.pkl','wb') as f:
pickle.dump(l_regression,f)
with open('tfidf_model.pkl', 'wb') as f:
pickle.dump(tfidf,f)
train()