Python加载文件内容的两种实现方式
作者:象在舞 发布时间:2023-09-01 03:17:14
说到机器学习,大家首先想到的可能就是Python和算法了,其实光有Python和算法是不够的,数据才是进行机器学习的前提。
大多数的数据都会存储在文件中,要想通过Python调用算法对数据进行相关学习,首先就要将数据读入程序中,本文介绍两种加载数据的方式,在之后的算法介绍中,将频繁使用这两种方式将数据加载到程序。
下面我们将以Logistic Regression模型加载数据为例,分别对两种不同的加载数据的方式进行介绍。
一、利用open()函数进行加载
def load_file(file_name):
'''
利用open()函数加载文件
:param file_name: 文件名
:return: 特征矩阵、标签矩阵
'''
f = open(file_name) # 打开训练数据集所在的文档
feature = [] # 存放特征的列表
label = [] #存放标签的列表
for row in f.readlines():
f_tmp = [] # 存放特征的中间列表
l_tmp = [] # 存放标签的中间列表
number = row.strip().split("\t") # 按照\t分割每行的元素,得到每行特征和标签
f_tmp.append(1) # 设置偏置项
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() # 关闭文件,很重要的操作
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
三、示例
我们可以使用上述的两种方法加载部分数据进行测试,数据内容如下:
数据分为三列,前两列是特征,最后一列是标签。
加载数据代码如下:
'''
两种方式加载文件
'''
import pandas as pd
import numpy as np
def load_file(file_name):
'''
利用open()函数加载文件
:param file_name: 文件名
:return: 特征矩阵、标签矩阵
'''
f = open(file_name) # 打开训练数据集所在的文档
feature = [] # 存放特征的列表
label = [] #存放标签的列表
for row in f.readlines():
f_tmp = [] # 存放特征的中间列表
l_tmp = [] # 存放标签的中间列表
number = row.strip().split("\t") # 按照\t分割每行的元素,得到每行特征和标签
f_tmp.append(1) # 设置偏置项
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() # 关闭文件,很重要的操作
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)
测试结果:
[[ 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]]
从测试结果来看可知两种加载数据的方法得到的数据结果是一样的,故两种方法均适用于加载数据。
注意:
此处是以Logistic Regression模型加载数据为例,数据与数据本身或许会有差异,但加载数据的方式都是大同小异的,要灵活变通。
来源:https://blog.csdn.net/gdkyxy2013/article/details/81979214


猜你喜欢
- char与varchar的区别来源:https://www.cnblogs.com/ZhuChangwu/p/15118290.html
- 一、原理说明1,authentication_string这是Mysql8.0新做出的修改,在旧版本中使用的是password()函数。2,
- 如何验证信用卡是否可用,合法? 核实信用卡的真伪是一件麻烦的事儿,看看下面的代码,也许会给你帮上忙:<Script
- 接上篇微信小程序后端搭建:分享:Laravel 微信小程序后端搭建后端搭建好后第一件事就是用户登录认证,简单实现微信小程序登录认证1.use
- 代码如下: <% Dim oConn, ors, aRows Dim i,j Set oConn=Server.CreateObjec
- 本文用python实现线性回归算法,供大家参考,具体内容如下# -*- coding: utf-8 -*-"""
- Flask file upload代码import osfrom flask import Flask, request, re
- QPixmap 像素图控件是用来处理图像的控件之一。它用于将优化后的图像显示在屏幕上。在我们的代码示例中,我们将使用QPixmap 控件在程
- 1. 拉取推送分支: git branch 分
- 代码如下:<form action="insert.asp" method="pos
- 但是有时候,可以视看处进逻辑程度,可以把三者写成一个触发器,只是在其中稍作判断而已。 你可以根据从下面方法判断触发器是是处理了插入,删除还是
- 查到的可能原因:1.本地的go编译器版本2. go module构建模式未开启3. 是否在go.mod所在目录执行的go mod tidy解
- 用css属性选择器可以有选择性地对链接样式进行控制,如让所有的外部链接都加一个小图标来标识其是一外部链接。但用css有弊端: 1、只支持Fi
- Python实现新版正方系统滑动验证码识别算法和方案步骤一:点击数据分析点击滑动按钮,将发送一个请求到 /zfcaptchaLogin请求内
- 由于javascript是一种无类型语言,所以一个数组的元素可以具有任意的数据类型,同一个数组的不同元素可以具有不同的类型,数组的元素设置可
- 本文实例讲述了golang实现http服务器处理静态文件的方法。分享给大家供大家参考,具体如下:新版本更精简:package mainimp
- reduce() 函数在 python 2 是内置函数, 从python 3 开始移到了 functools 模块。官方文档是这样介绍的re
- 本文实例讲述了Python设计模式之代理模式。分享给大家供大家参考,具体如下:代理模式(Proxy Pattern):为其他对象提供一种代理
- Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。下载Go语言开发包大家可以在Go语
- 这篇文章主要介绍了简单了解Django ORM常用字段类型及参数配置,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习