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