我收到此错误
Traceback (most recent call last):
File "Exporter.py", line 3, in <module>
import sys,getopt,got,datetime,codecs
File "C:\Users\Rohil\Desktop\GetOldTweets-python-master\got\__init__.py", line 1, in <module>
import models
ModuleNotFoundError: No module named 'models'
Run Code Online (Sandbox Code Playgroud)
我的目录树是:
C:\Users\Rohil\Desktop\GetOldTweets-python-master\got
Run Code Online (Sandbox Code Playgroud)
这包含 2 个文件夹:manager 和 models 以及 1 个 __init__.py 文件,代码如下:
import models
import manager
Run Code Online (Sandbox Code Playgroud)
我正在执行一个带有路径的文件: C:\Users\Rohil\Desktop\GetOldTweets-python-master\Exporter.py
我无法弄清楚是什么问题。有人可以帮助我吗?
我正在开发一个项目,通过用户的推文来预测他的个性。
为了进行训练,我有一个包含 350000 条已接受性格测试的用户推文的大型语料库,每条推文都链接到特定的性格类型。有16种不同的性格类型(1-16)
我对此推文进行了预处理,以删除停用词、词干和词性标记。
我有一本包含 500 个最常用单词的大字典,我将用它作为我的训练特征。之后,我使用 500 个单词的预定义字典对每条推文执行 tfidf 向量化,为每条推文创建一个词向量。
vectorizer=TfidfVectorizer(vocabulary=mydict,min_df=1)
x=vectorizer.fit_transform(corpus).toarray()
Run Code Online (Sandbox Code Playgroud)
其中语料库是所有推文的列表。然后,我使用以下方法将其x与y(每条推文 1-16 个类)结合起来:
result=np.append(x,y,axis=1)
X=pandas.DataFrame(result)
X.to_csv('vectorized500.csv')
Run Code Online (Sandbox Code Playgroud)
我使用这个(350000*500)数据框作为X我的1-16编号的性格类型作为我的Y数据框(350000*1),它被平等地分为训练和测试:
X=pd.read_csv('vectorized500.csv')
train = X.sample(frac=0.8, random_state=200)
test=X.drop(train.index)
y_train=train["501"] #501 is the column name where Y is in the csv file
y_test=test["501"]
xtrain=train.drop("501",axis=1)
xtest=test.drop("501",axis=1)
Run Code Online (Sandbox Code Playgroud)
然而,无论我运行什么算法,我都会得到非常糟糕的结果:
model=RandomForestClassifier()
model.fit(xtrain,y_train)
pickle.dump(model, open('rf1000.sav', 'wb'))
print(model.score(xtest,y_test))
Run Code Online (Sandbox Code Playgroud)
如果我跑步RandomForestClassifier,我会得到 52% 的准确率。
如果我运行朴素贝叶斯、逻辑回归或线性 SVM,我会得到低于 20% 的准确度。
有没有有效的方法来运行这种多类文本分类,或者我做错了什么?准确率太低,我想提高它。
python machine-learning svm random-forest text-classification