机器学习基础学习笔记【二】
机器学习概述
- 一. Python数据处理基础
- 1. 基本数据类型
- 1.1 number
- 1.2 str
- 1.2.1 字符串判断
- 1.2.2 拆分字符串
- 1.3 列表 []
- 1.3.1 删除列表元素
- 1.4 tuple ()
- 1.5 dict {}
- 1.6 set {}
- 1.7 range()函数
- 2. 运算符
- 2.1 算术运算符
- 2.2 位运算符
- 2.3 输入输出
- 2.3.1 input
- 2.3.2 格式化输出
- 3. 控制结构
- 4. 函数
- 4.1 函数参数
- 4.2 匿名函数
- 5. 数据文件读写
- 5.1 Python原生标准文件的打开、读取(写入)、关闭操作
- 5.2 Numpy存取文件
- 5.3 Pandas存取文件
一. Python数据处理基础
1. 基本数据类型
- 标准数据类型有6种,包括number、str、list、tuple、set、dictionary
- 其中number和str属于基础数据类型,list、tuple、dict、set属于复合数据类型
- list、set、dictionary是可变数据类型,number、str、tuple不可变数据类型
1.1 number
- 数值型,是专门用于存储数值的数据类型,具有不可变性。
- 所以数值型数据没有++、–等自增自减运算符
- 支持4种不同的数值数据类型:int、float、bool、complex
- 2个数相除,结果总是浮点数,即便这2个数都是整数且能整除
1.2 str
1.索引
- 通过索引获得字符串中单个字符的值。
- 索引从0开始,也可以用负索引。
2.切片 - 通过切片来获取子字符串的值【利用索引同时取出字符串中多个字符】
- 切片时结束索引的值取不到。
3.其他操作 - 可通过 变量[::-1] 实现字符串反向排列
str='Picture'
print(str[2]) # 索引
print(str[1:3]) # 切片
print(str[-3:-1])
print(str[3:-1])
print(str[-6:7])
print(str[2:]) #从开始索引到末尾
print(str[:5]) # 从开头到末索引之前的元素
print(str[:]) # 整个字符串
print(str[1::2]) # 步长
print(str[::-1]) print(str*2) print(str+'TEST')
c
ic
ur
tur
icture
cture
Pictu
Picture
itr
erutciP
PicturePicture
PictureTEST
- 可以对字符串变量整体修改,但是不能对字符串中某个字符进行修改
- 字符串改写常用方法:
- 注意:.capitalize()和.title()除了改变首字母为大写外,其他大写字母还会改写为小写字母
1.2.1 字符串判断
- 判断字符串以什么开头,用方法.startswith()
- 判断字符串以什么结尾,用方法.endswith()
- 判断字符(串)是否在字符串中,可以是用“in”运算符
- 通过方法.find()获取字符或子串的下标,当返回值为-1时,表示没有找到
1.2.2 拆分字符串
- 使用方法.split(),得到的是一个列表
- 列表的索引和切片同字符串,但是列表中的单个元素可以修改
- 列表常用的方法如下:
1.3 列表 []
1.3.1 删除列表元素
- 前3种是通过位置删除,最后1种是通过值删除
- 使用del语句删除元素, del mylist[0] ,是将列表中索引为0的元素删除
- 使用pop()方法删除最后一个元素,使用pop()方法可以删除列表最后一个元素,并可将该元
素赋值给某变量 mylist1=mylist.pop() - 使用pop()方法删除任何位置的元素,只要在括号中指定要删除元素的索引,并可将该元素赋
值给某变量。 mylist1=mylist.pop(3) - 根据值删除元素,使用remove()方法,并可将该元素赋值给某变量。
mylist1=mylist.remove(‘elem’) ,该方法只删除第一个指定的值,如果要删除的值在列表中出现多次,需要使用循环来实现
1.4 tuple ()
- 元组写到()中,元素之间用逗号分隔,元素可以具有不同额类型
- 元组与列表类似,但是元组中的元素不能修改
但如果元组内部的数据项是可变类型,则该数据项可以修改,比如数据项为列表 - 元组的截取方式与字符串和列表类似,下标都是从0开始,末尾的位置从-1开始
- 元组可以直接赋值给变量
1.5 dict {}
- 字典的访问需要使用键,并且用[]将键括起来
- 修改字典:通过访问键进行赋值实现添加或修改,使用update()方法修改或添加,使用del运
算符删除,使用clear()方法清空字典
dict={'name':'zhangsan','age':20}
print('原字典:')
print(dict) # 添加
dict['gender']='Female'
print('添加后:')
print(dict) # 修改1
dict['name']='lisi'
print('修改后:')
print(dict) # 修改2
dict.update({'No':1,'age':22})
print('修改后:')
print(dict) # 删除
del dict['gender']
print('删除后:')
print(dict) # 清空
dict.clear()
print('清空后:')
print(dict)
原字典: {‘name’: ‘zhangsan’, ‘age’: 20}
添加后: {‘name’: ‘zhangsan’, ‘age’: 20, ‘gender’: ‘Female’}
修改后: {‘name’: ‘lisi’, ‘age’: 20, ‘gender’: ‘Female’}
修改后: {‘name’: ‘lisi’, ‘age’: 22, ‘gender’: ‘Female’, ‘No’: 1}
删除后: {‘name’: ‘lisi’, ‘age’: 22, ‘No’: 1}
清空后: {}
1.6 set {}
- 由一系列无序的【所以不能索引】、不重复的数据项组成,集合中每个元素都是唯一的。
- 创建集合可以使用{}或者set()函数,set()函数的参数是str,会将该str拆分为单个字符
- 创建一个空集合必须使用set()函数,因为空的{}创建的是空字典。
- 集合的作用主要是去重,可以使用set()函数进行去重
1.7 range()函数
- 用于生成一系列数,返回值是range类型。【注意:是一系列数,不是列表】,这是一个函
数,参数之间用逗号隔开。
- 参数可以取1个,range(a)得到从0开始到a-1共a个数。取不到最后一个值,这是编程语音的
差一行为的结果 - 参数取2个,range(b,a)得到从b开始到a-1共a-b+1个数
- 参数取3个,range(b,a,c)得到从b开始到a-1的若干个数,各数之间的差值为c,即第3个参数
用于设置步长
2. 运算符
2.1 算术运算符
- +、-、*、/、%、**、//
- 进行除法运算时,不管商为整数还是浮点数,运算结果始终为浮点数
2.2 位运算符
- &、|、^、~、<<、>>
-== ^ 是异或== - ~ 是按位反转。转换公式是~x=-x-1这里用到:负数在计算机里用补码存。
2.3 输入输出
2.3.1 input
- input函数将所有接收的数据类型都默认为str,要得到需要的数据类型,需要强制转换。
2.3.2 格式化输出
- 主要是为了方便修改语句,减少编写代码的工作量,并且包含自动取位、转换进制等
- 格式化输出有3种, %+格式符方法、format函数方法、f-string方法
%s、%d、%f、%%。如
print(“我的名字是%s”%name)
print(“我的学号是%06d”%student_no)
print(“苹果单价%.02f”%price)
print(“数据比例%.02f%%”%scale)使用format。如
print(“{}曰:学而时习之,不亦{}”.format(“孔子”,“说乎”))
print(“{1}曰:学而时习之,不亦{0}”.format(“说乎”,“孔子”))f-string(f字符串)方法
print(f’{name}的爱好是{fondness}')
其中name和fondness是变量名,比如name=“zhangsan” fondness=“pingpang”print(doc) 语句的作用是:打印该语句前面但离得最近的那个大段注释(也叫说明文
档)
3. 控制结构
- 关于break和continue
for i in range(10):if i==3: break print(f'--------{i}--------') for j in range(6): if j==2: continue elif j==4: continue else:print(j)
--------0--------
0
1
3
5
--------1--------
0
1
3
5
--------2--------
0
1
3
5
4. 函数
4.1 函数参数
- 不定数量位置参数【元组】,定义时前面加一个星号
- 不定数量的关键字参数【字典】,定义时前面加两个星号
# 位置参数、默认参数、不定量参数【元组】、关键字参数【字典】
def func(a,b=1,*num,**kwargs): print(a,b,num,kwargs) func(2)
func(4,2,3,4,5,6,c=2,d=5,e=8)
func(4,2,3,d=5,e=8)
4.2 匿名函数
- 函数无名,用lambda关键字创建
5. 数据文件读写
5.1 Python原生标准文件的打开、读取(写入)、关闭操作
- 打开文件的内置函数是open()函数,打开文件后会创建一个文件对象,对文件的访问通过这
个文件对象进行
- 函数中的参数有3个,第1个是文件名、第2个是打开方式、第3个参数是可选的,用来设置是否使用缓冲区
- 函数中各参数都用引号引上
- 文件的不同打开方式
- 打开方式有w、w+、r、r+、a、a+等。带有+表示读写方式打开
- 还有wb、rb、ab等打开方式,为二进制方式打开。
- 打开方式为写入或追加时,如果文件存在则打开该文件,如果该文件不存在则创建文件
- 文件打开方式不同,指针指向不同
- 打开方式为w、r时,指针指向文件的开头
- 打开方式为a时,指针指向文件的结尾
- 向文件写入数据,使用文件对象的write()方法,参数是要写入文件的字符串
- 如果需要对文件写入数据,打开方式需要选择’w’(覆盖写入)或者’a’(追加)或‘r+’模式
- 打开方式为w:在写入时会清空文件中内容,然后从当前指针处开始往后重新写入数据
- 打开方式为a:在写入时会在后面文件最后添加
- 打开方式为r+:在写入时,会从当前指针开始覆盖原文件中的内容,后面没有被覆盖的内容
保留。
- 文件对象也提供了读取文件的方法,包括read()、readline()、readlines()等
- f.read(),默认读取整个文件,如果设置了参数count,则从当前位置读取count字节。返回值
为字符串 - f.readline(),从当前位置读取文件中一行,返回值为字符串
- f.readlines(),从当前位置开始,读取文件的所有行,返回值为列表,列表的一项对应文件的
一行,是字符串。可以使用for循环对文件对象进行遍历 - 文件读取或写入后,文件指针的指向会发生变化
- 文件使用完毕后,要关闭文件。使用文件对象的.close()方法关闭文件
- 更方便的方法是使用python提供的with语句,使用with语句打开文件时,不必调用f.close()方
法就能自动关闭文件。即使文件读取出错,也会保证关闭文件。
with open('f:/temp.txt','a+') as f: f.write('lisi\n')
5.2 Numpy存取文件
- 可以通过loadtxt()从文本文件中读取数据,得到的是nd-array
- 用savetxt()把数组写入文本文件
- Numpy主要读、写函数如下:
- Numpy中ndarray要求元素是单一数据类型的数据。
- 读取的.csv文件中的数据类型可能不同,所以加dtype=np.str_将所有数据转换为统一的类型,即string类型
# 读取 import numpy as np
tmp=np.loadtxt('f:/temp1.txt',dtype=np.str_,delimiter='\n')
print(tmp,type(tmp))
# 另一种导入包及函数的方式
from numpy import loadtxt
tmp=loadtxt('f:/temp1.txt',dtype=np.str_,delimiter='\n')
print(tmp,type(tmp))
5.3 Pandas存取文件
- Pandas的基础是Numpy,核心功能是数据计算和处理。
- Pandas库提供了专门的文件输入输出函数,大致分为读取函数和写入函数,如表
import pandas as pd
data=pd.read_csv('f:/data/film.csv') # 默认是逗号分隔符,可以省略
data.head()
机器学习基础学习笔记【二】相关推荐
- 吴恩达《机器学习》学习笔记二——单变量线性回归
吴恩达<机器学习>学习笔记二--单变量线性回归 一. 模型描述 二. 代价函数 1.代价函数和目标函数的引出 2.代价函数的理解(单变量) 3.代价函数的理解(两个参数) 三. 梯度下降- ...
- Java基础学习笔记(二)_Java核心技术(进阶)
本篇文章的学习资源来自Java学习视频教程:Java核心技术(进阶)_华东师范大学_中国大学MOOC(慕课) 本篇文章的学习笔记即是对Java核心技术课程的总结,也是对自己学习的总结 文章目录 Jav ...
- java冰法_Java基础学习笔记二 Java基础语法
注释 注释用来解释和说明程序的文字,注释是不会被执行的. 单行注释 //这是一条单行注释 public int i; 多行注释 /*这是 * 一段注释, * 它跨越了多个行*/ public void ...
- Python3零基础学习笔记二
python3中常用的字符串方法(method) 方法的调用方法: 对象.方法名(方法传参) 说明: 方法的调用同函数调用一样属于表达式. 示例: ...
- 吴恩达《机器学习》学习笔记七——逻辑回归(二分类)代码
吴恩达<机器学习>学习笔记七--逻辑回归(二分类)代码 一.无正则项的逻辑回归 1.问题描述 2.导入模块 3.准备数据 4.假设函数 5.代价函数 6.梯度下降 7.拟合参数 8.用训练 ...
- 吴恩达《机器学习》学习笔记十二——机器学习系统
吴恩达<机器学习>学习笔记十二--机器学习系统 一.设计机器学习系统的思想 1.快速实现+绘制学习曲线--寻找重点优化的方向 2.误差分析 3.数值估计 二.偏斜类问题(类别不均衡) 三. ...
- 【笔记】MySQL的基础学习(二)
[笔记]MySQL的基础学习(二) MySQL 老男孩 一 视图 视图其实就是给表起个别名 1.创建视图 格式:CREATE VIEW 视图名称 AS SQL语句 CREATE VIEW v1 AS ...
- Python基础学习笔记之(二)
Python基础学习笔记之(二) zouxy09@qq.com http://blog.csdn.net/zouxy09 六.包与模块 1.模块module Python中每一个.py脚本定义一个模块 ...
- Unity超基础学习笔记(二)
Unity超基础学习笔记(二) 1. 基本数据类型的扩展 之前在K12中学习了一些基本的数据类型,实际上C#支持更多的数据类型.如下: 注意无符号整型数和有符号整型数的表示范围,例如: int 能表示 ...
最新文章
- 怎么扫描_打印机上扫描仪怎么用 打印机上扫描仪使用及添加方法
- 数据挖掘导论读书笔记10聚类分析续
- Ajax 中XmlHttp 乱码 的解决方法 (UTF8,GB2312 编码 解码)
- mac下android环境搭建笔记(android studio)
- awk用法小结(作者总结)
- 【HDU - 2546】饭卡 (dp,0-1背包,贪心思想)
- 学习较底层编程:动手写一个C语言编译器
- 【Pytorch神经网络理论篇】 32 PNASNet模型:深层可分离卷积+组卷积+空洞卷积
- oracle数据库密码复杂度查询,Oracle11g R2创建PASSWORD_VERIFY_FUNCTION对应密码复杂度验证函数步骤...
- PyTorch是个啥玩意儿?
- Hive insert into小文件问题优化解决
- 微信小程序相关三、css写小黄人
- Properties 类的详细使用(十三)
- 大数据分页实现与性能优化【转】
- 【iOS】file not found: .../Build/Products/Debug-iphonesimulator file not found
- virtualBox虚拟机之间网络互通设置
- 根据标注点坐标范围计算显示缩放级别zoom自适应显示地图
- node 热更新代码,无需每次重启命令
- 史诗级漏洞爆发,Log4j 背后的开源人何去何从?
- 转行做美工设计有没有前途?0基础怎么学好美工设计?