Python加載文件內(nèi)容的兩種實現(xiàn)方式
說到機器學習,大家首先想到的可能就是Python和算法了,其實光有Python和算法是不夠的,數(shù)據(jù)才是進行機器學習的前提。
大多數(shù)的數(shù)據(jù)都會存儲在文件中,要想通過Python調(diào)用算法對數(shù)據(jù)進行相關(guān)學習,首先就要將數(shù)據(jù)讀入程序中,本文介紹兩種加載數(shù)據(jù)的方式,在之后的算法介紹中,將頻繁使用這兩種方式將數(shù)據(jù)加載到程序。
下面我們將以Logistic Regression模型加載數(shù)據(jù)為例,分別對兩種不同的加載數(shù)據(jù)的方式進行介紹。
一、利用open()函數(shù)進行加載
def load_file(file_name): ''' 利用open()函數(shù)加載文件 :param file_name: 文件名 :return: 特征矩陣、標簽矩陣 ''' f = open(file_name) # 打開訓練數(shù)據(jù)集所在的文檔 feature = [] # 存放特征的列表 label = [] #存放標簽的列表 for row in f.readlines(): f_tmp = [] # 存放特征的中間列表 l_tmp = [] # 存放標簽的中間列表 number = row.strip().split("\t") # 按照\t分割每行的元素,得到每行特征和標簽 f_tmp.append(1) # 設(shè)置偏置項 for i in range(len(number) - 1): f_tmp.append(float(number[i])) l_tmp.append(float(number[-1])) feature.append(f_tmp) label.append(l_tmp) f.close() # 關(guān)閉文件,很重要的操作 return np.mat(feature), np.mat(label)
二、利用Pandas庫中的read_csv()方法進行加載
def load_file_pd(path, file_name): ''' 利用pandas庫加載文件 :param path: 文件路徑 :param file_name: 文件名稱 :return: 特征矩陣、標簽矩陣 ''' feature = pd.read_csv(path + file_name, delimiter="\t", header=None, usecols=[0, 1]) feature.columns = ["a", "b"] feature = feature.reindex(columns=list('cab'), fill_value=1) label = pd.read_csv(path + file_name, delimiter="\t", header=None, usecols=[2]) return feature.values, label.values
三、示例
我們可以使用上述的兩種方法加載部分數(shù)據(jù)進行測試,數(shù)據(jù)內(nèi)容如下:
數(shù)據(jù)分為三列,前兩列是特征,最后一列是標簽。
加載數(shù)據(jù)代碼如下:
''' 兩種方式加載文件 ''' import pandas as pd import numpy as np def load_file(file_name): ''' 利用open()函數(shù)加載文件 :param file_name: 文件名 :return: 特征矩陣、標簽矩陣 ''' f = open(file_name) # 打開訓練數(shù)據(jù)集所在的文檔 feature = [] # 存放特征的列表 label = [] #存放標簽的列表 for row in f.readlines(): f_tmp = [] # 存放特征的中間列表 l_tmp = [] # 存放標簽的中間列表 number = row.strip().split("\t") # 按照\t分割每行的元素,得到每行特征和標簽 f_tmp.append(1) # 設(shè)置偏置項 for i in range(len(number) - 1): f_tmp.append(float(number[i])) l_tmp.append(float(number[-1])) feature.append(f_tmp) label.append(l_tmp) f.close() # 關(guān)閉文件,很重要的操作 return np.mat(feature), np.mat(label) def load_file_pd(path, file_name): ''' 利用pandas庫加載文件 :param path: 文件路徑 :param file_name: 文件名稱 :return: 特征矩陣、標簽矩陣 ''' feature = pd.read_csv(path + file_name, delimiter="\t", header=None, usecols=[0, 1]) feature.columns = ["a", "b"] feature = feature.reindex(columns=list('cab'), fill_value=1) label = pd.read_csv(path + file_name, delimiter="\t", header=None, usecols=[2]) return feature.values, label.values if __name__ == "__main__": path = "C://Users//Machenike//Desktop//xzw//" feature, label = load_file(path + "test.txt") feature_pd, label_pd = load_file_pd(path, "test.txt") print(feature) print(feature_pd) print(label) print(label_pd)
測試結(jié)果:
[[ 1. 1.43481273 4.54377111]
[ 1. 5.80444603 7.72222239]
[ 1. 2.89737803 4.84582798]
[ 1. 3.48896827 9.42538199]
[ 1. 7.98990181 9.38748992]
[ 1. 6.07911968 7.81580716]
[ 1. 8.54988938 9.83106546]
[ 1. 1.86253147 3.64519173]
[ 1. 5.09264649 7.16456405]
[ 1. 0.64048734 2.96504627]
[ 1. 0.44568267 7.27017831]]
[[ 1. 1.43481273 4.54377111]
[ 1. 5.80444603 7.72222239]
[ 1. 2.89737803 4.84582798]
[ 1. 3.48896827 9.42538199]
[ 1. 7.98990181 9.38748992]
[ 1. 6.07911968 7.81580716]
[ 1. 8.54988938 9.83106546]
[ 1. 1.86253147 3.64519173]
[ 1. 5.09264649 7.16456405]
[ 1. 0.64048734 2.96504627]
[ 1. 0.44568267 7.27017831]]
[[ 0.]
[ 0.]
[ 0.]
[ 0.]
[ 0.]
[ 0.]
[ 0.]
[ 0.]
[ 0.]
[ 0.]
[ 0.]]
[[0]
[0]
[0]
[0]
[0]
[0]
[0]
[0]
[0]
[0]
[0]]
從測試結(jié)果來看可知兩種加載數(shù)據(jù)的方法得到的數(shù)據(jù)結(jié)果是一樣的,故兩種方法均適用于加載數(shù)據(jù)。
注意:
此處是以Logistic Regression模型加載數(shù)據(jù)為例,數(shù)據(jù)與數(shù)據(jù)本身或許會有差異,但加載數(shù)據(jù)的方式都是大同小異的,要靈活變通。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python的Scrapy框架中的CrawlSpider介紹和使用
這篇文章主要介紹了Python的Scrapy框架中的CrawlSpider介紹和使用,CrawlSpider其實是Spider的一個子類,除了繼承到Spider的特性和功能外,還派生除了其自己獨有的更加強大的特性和功能,其中最顯著的功能就是"LinkExtractors鏈接提取器",需要的朋友可以參考下2023-12-12用python的requests第三方模塊抓取王者榮耀所有英雄的皮膚實例
下面小編就為大家分享一篇用python的requests第三方模塊抓取王者榮耀所有英雄的皮膚實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨想過來看看吧2017-12-12新建文件時Pycharm中自動設(shè)置頭部模板信息的方法
這篇文章主要介紹了新建文件時Pycharm中自動設(shè)置頭部模板信息的方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-04-04