3.5 KiB
3.5 KiB
from sklearn.pipeline import make_pipeline
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB
import pandas as pd
import csv
import numpy as np
from sklearn.preprocessing import LabelEncoder
steps = make_pipeline(TfidfVectorizer(),MultinomialNB())
#training
all_train_data_in = pd.read_csv('train/in.tsv.xz', compression='xz', header=None, error_bad_lines=False, quoting=csv.QUOTE_NONE, sep='\t')
train_data_ex = pd.read_csv('train/expected.tsv', header=None, error_bad_lines=False, quoting=csv.QUOTE_NONE, sep='\t')
train_data_in = []
for value in all_train_data_in.values:
temp = ""
for el in value:
if(temp == ""):
temp = str(el)
else:
temp += '\t' + str(el)
train_data_in.append(temp)
nb=steps.fit(train_data_in, LabelEncoder().fit_transform(train_data_ex.values))
/home/ubuntu/anaconda3/lib/python3.8/site-packages/sklearn/utils/validation.py:73: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel(). return f(**kwargs)
#dev0
all_dev0_data = pd.read_csv('dev-0/in.tsv.xz', compression='xz', header=None, quoting=csv.QUOTE_NONE, sep='\t')
dev0_data = []
for value in all_dev0_data.values:
temp = ""
for el in value:
if(temp == ""):
temp = str(el)
else:
temp += '\t' + str(el)
dev0_data.append(temp)
dev0_y = nb.predict(dev0_data)
#zapis wyników
dev0_y.tofile('dev-0/out.tsv', sep='\n')
#test-A
all_testA_data = pd.read_csv('test-A/in.tsv.xz', compression='xz', header=None, quoting=csv.QUOTE_NONE, sep='\t')
testA_data = []
for value in all_testA_data.values:
temp = ""
for el in value:
if(temp == ""):
temp = str(el)
else:
temp += '\t' + str(el)
testA_data.append(temp)
testA_y = nb.predict(testA_data)
#zapis wyników
testA_y.tofile('test-A/out.tsv', sep='\n')