簡體   English   中英

如何從python中的pandas數據幀加載Weka數據集

[英]How to Load Weka data set from pandas dataframe in python

目前,我正在將 Pandas 數據框設置為 csv 並將其作為來自 CSV loader 的 weka 數據集加載。 是否有一種機制可以將 Pandas 數據幀直接加載到 weka 數據集中,而無需在兩者之間創建中間 CSV 文件

learn_df = pd.DataFrame.from_records([s.to_dict() for s in learnList])
header = ["reviewId","word","type","positive_sentiment","negative_sentiment","number_of_noun","sentence","hasNeg","overallSentiment","sentiment"]
learn_df.to_csv(helper.get_data_dir() + os.sep + "resultTest.csv", index=None, header=True,columns=header)
diabetes_file = helper.get_data_dir() + os.sep + "resultTest.csv"
helper.print_info("Loading dataset: " + diabetes_file)
loader = Loader("weka.core.converters.CSVLoader")

diabetes_data = loader.load_file(diabetes_file)
remove = Filter(classname="weka.filters.unsupervised.attribute.Remove", options=["-R", "1,2,7"])
remove.inputformat(diabetes_data)
filtered = remove.filter(diabetes_data)
//code to classify instances here

每次轉換為 csv 並從 csv 加載以進行分類都是一個代價高昂的過程。 有沒有機制可以避免這種情況?

@Manish您可以將pandas數據幀轉換為列表或numpy矩陣,然后使用weka方法create_instances_from_lists()和create_instances_from_matrices()。

有關更多詳細信息,您可以查看位於http://fracpete.github.io/python-weka-wrapper/examples.html的 weka 示例

關於將最后一列設置為nominal類型而不是numeric ,如@Pedro Pablo Severin Honorato 的評論中所述,您可以使用 weka 過濾器。

一個相同的例子如下:

from weka.filters import Filter

num_to_nom = Filter(classname="weka.filters.unsupervised.attribute.StringToNominal", options=["-R", "last"])
num_to_nom.inputformat(data)      #data is the weka dataset whose last column is numeric.
newData=num_to_nom.filter(data)   #newData is the weka dataset whose last column is nominal.

希望這可以幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM