到目前为止,我有以下代码:
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
from sklearn import preprocessing
from sklearn.naive_bayes import GaussianNB
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
df_train = pd.read_csv('uc_data_train.csv')
del df_train['Unnamed: 0']
temp = df_train['size_womenswear']
del df_train['size_womenswear']
df_train['size_womenswear'] = temp
df_train['count'] = 1
print(df_train.head())
print(df_train.dtypes)
print(df_train[['size_womenswear', 'count']].groupby('size_womenswear').count()) # Determine number of unique catagories, and number of cases for each catagory
del df_train['count']
df_test = pd.read_csv('uc_data_test.csv')
del df_test['Unnamed: 0']
print(df_test.head())
print(df_test.dtypes)
df_train.drop(['customer_id','socioeconomic_status','brand','socioeconomic_desc','order_method',
'first_order_channel','days_since_first_order','total_number_of_orders', 'return_rate'], axis=1, inplace=True)
LE = preprocessing.LabelEncoder() # Create label encoder
df_train['size_womenswear'] = LE.fit_transform(np.ravel(df_train[['size_womenswear']]))
print(df_train.head())
print(df_train.dtypes)
x = df_train.iloc[:,np.arange(len(df_train.columns)-1)].values # Assign independent values
y = df_train.iloc[:,-1].values # and dependent values
xTrain, xTest, yTrain, yTest = train_test_split(x, y, test_size = 0.25, random_state = 0) # Testing on 75% of the data
model = GaussianNB()
model.fit(xTrain, yTrain)
yPredicted = model.predict(xTest)
#print(yPrediction)
print('Accuracy: ', accuracy_score(yTest, yPredicted))
我不确定如何包括我正在使用的数据,但是我正在尝试预测'size_womenswear'
。我已经编码了8种不同的尺寸来进行预测,并将此列移至数据框的末尾。因此y
是从属的,x
是独立的(所有其他列)
我正在使用高斯朴素贝叶斯分类器尝试对8种不同大小进行分类,然后对25%的数据进行测试。结果不是很好。
我不知道为什么当我处理80,000行时,我只能得到61%的精度。我对机器学习非常陌生,希望对您有所帮助。在这种情况下,有没有比高斯朴素贝叶斯更好的方法?
答案 0 :(得分:0)
不能发表评论,只是抛出一些想法;
也许您需要处理类的不平衡问题,并尝试其他适合数据的模型?如果数据良好,通常可以使用xgboost或lightgbm程序包,通常它们的性能通常都很好,但这实际上取决于数据。
您也可以采用分割训练和测试的方式,得到的训练和测试数据集对Y的分布是否相似?这很重要。
最后,对于分类模型,性能测量可能有些棘手,请尝试其他一些测量方法。 F1得分或尝试绘制一个混淆矩阵,以查看您对Y的预测。也许您的模型正在将所有事物预测为一个 或仅几节课。