1、简述你所理解的机器学习,并说明目前学过的知识与机器学习的关系。
数据处理及其在机器学习中的地位。数据处理是机器学习的前期重要步骤,机器学习就是从数据中学到“知识”。数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。
机器学习(Machine Learning,ML)是人工智能的核心,涉及统计学、系统辨识、逼近理论、神经网络、优化理论、计算机科学、脑科学等诸多领域,研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构从而不断改善自身的性能。
编写一些算法,让机器来模拟人脑,推算出想要的结果
2、关于正则表达式,回答以下问题:
(1)什么是正则表达式,它有什么作用;
正则表达式是一个特殊的字符序列,能方便的检查一个字符串是否与某种模式匹配。
正则表达式一定是对字符串进行操作,方便于有效数据信息的提取。
(2). * + ? 分别是什么含义,如果将他们进行组合呢?
. 任意字符 * 重复零次或更多次 + 重复一次或更多次
? 重复零次或一次(非贪婪匹配) *? 重复任意次,但尽可能少重复
+? 重复 1 次或更多次,但尽可能少重复 ?? 重复 0 次或 1 次,但尽可能少重复
(3)python re 模块中,findall、search 和 match 有什么区别;
- findall:返回所有满足匹配条件的结果, 放在列表里
- search:会在字符串内查找模式匹配, 只到找到第一个匹配然后返回一个包含匹配信息的对象, 该对象可以通过调用 group() 方法得到匹配的字符串, 如果字符串没有匹配,则返回 None
- match:同 search, 不过尽在字符串开始处进行匹配
(4)写出匹配手机号的正则表达式(手机号共 11 位,且以 13、14、15、18 开头)
∧(13|14|15|18)[0-9]{9}$
3、python 和 C 语言的区别和优缺点,它们分别适用于什么场合。
- 翻译方式来看,python 是解释型语言,不需要预先编译,边解释边执行;C 是编译型语言,需要通过预先编译变成机器语言,再执行,所以 C 执行语言效率比 python高;
- C 语言是面向过程的,python 可以面向对象;
- C 语言更适合底层开发,直接与操作系统打交道;python 更适合于脚本编写、数据科学、机器学习等方向的应用(库函数的强大功能)。
4、关于面向对象,回答以下问题:
(1)什么是面向对象(面向对象的特性),它与面向过程有什么区别;
- 一切事物皆对象,通过面向对象的方式,将现实世界的事物抽象成对象,现实世界中的关系抽象成类、继承,帮助人们实现对现实世界的抽象与数字建模;
- 主要思想是把构成问题的各个事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述一个事物在整个解决问题的步骤中的行为;
- 三大特性:
封装(封装是将过程和数据包围起来, 数据只能通过定义的接口访问)
继承(建立一个新的派生类,从一个或多个先前定义的类中继承数据和函数,可以重新定义或加进新数据和函数,从而建立了类的层次或等级)
多态(同一操作作用与不同类的实例,将产生不同的执行结果,即不同类的对象收到相同的消息时,将得到不同的结果)- 面向过程是直接将解决问题的步骤分析出来,然后用函数把步骤一步一步实现,然后再依次调用就可以了;而面向对象是将构成问题的事物,分解成若干个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个事物在解决问题过程中的行为。 面向过程思想偏向于我们做一件事的流程,首先做什么,其次做什么,最后做什么。
(2)类、对象、实例、实例化之间的关系;
- 一切皆为对象,类是一种类型,一种更高层次的抽象
- 实例是根据类创建出来的一个一个对象
- 用类创建对象的过程就是实例化
(3)说明”init” 函数的作用,一定要有这个函数吗?
该函数为构造函数,类实例化时会自动调用,一般用于参数的初始化;可以没有这个函数(如果不需要参数初始化的话)。
5、关于 csv 操作,回答以下问题:
(1)csv 文件一定是逗号分隔的吗?pandas 如何读取 csv 文件,读入后是什么格式?
- csv:逗号分隔值(Comma-Separated Values)有时也称为字符分隔值,因为分隔字符也可以不是逗号。其文件以纯文本形式存储表格数据(数字和文本)
- pandas 通过 read_csv() 函数读入 csv 文件,读入后是 DataFrame 格式
(2)写出关键语句:将以逗号 ( , ) 分隔的文件 test.csv 读入,并将分隔符改为横线 (-),覆盖原文件。
import pandas as pd
data = pd.read_csv('test.csv', sep=',', header=None)
data.to_csv('test.csv', sep='-', index=False , header=False)
6、python 中,如何对字典、列表、字符串之间进行两两转换?
[’a’, ’b’, ’c’] ⇐⇒ ’abc’
k = [’a’, ’b’, ’c’], v = [1, 2, 3] ⇐⇒ {’a’: 1, ’b’: 2, ’c’: 3}
{’a’: 1, ’b’: 2, ’c’: 3} ⇐⇒ ’{”a”:1, ”b”:2, ”c”:3}’
// 列 表 转 字 符 串
‘’.join([‘a’, ‘b’, ‘c’]) // ‘abc’
// 字 符 串 转 列 表
list(‘abc’) // [‘a’, ‘b’, ‘c’]
// 两 个 列 表 转 成 字 典
k = [‘a’, ‘b’, ‘c’] v = [1, 2, 3]
dict(zip(k, v)) // {‘a’: 1, ‘b’: 2, ‘c’: 3}
// 字 典 转 列 表
d = {‘a’: 1, ‘b’: 2, ‘c’: 3}
list(d.keys()) // [‘a’, ‘b’, ‘c’]
list(d.values()) // [1, 2, 3]
// 字 符 串 转 字 典
import json
s = ‘{“a”:1, “b”:2, “c”:3}’
json.loads(s) // {‘a’: 1, ‘b’: 2, ‘c’: 3}
// 字 典 转 字 符 串
import json
d = {‘a’: 1, ‘b’: 2, ‘c’: 3}
json.dumps(d) // ‘{“a”: 1, “b”: 2, “c”: 3}’
// str(d) 也 能 实 现
1、说明 #include<filename.h> 和 #include”filename.h” 的区别。
) 对于 #include<filename.h>, 编译器先从标准库路径开始搜索 filename.h,使得系统文件调用比较快;
2) 对于 #include”filename.h”,编译器先从用户的工作路径开始搜索 filename.h,后去寻找系统路径,使得自定义文件较快。
2、说明 with 语句的原理,以及 with 和文件操作结合的好处。
上下文管理器(Context Manager):支持上下文管理协议的对象,这种对象实现了__enter__() 和 exit() 方法。上下文管理器定义执行 with 语句时要建立的运行时上下文,负责执行 with 语句块上下文中的进入与退出操作。通常使用 with 语句调用上下文管理器,也可以通过直接调用其方法来使用。
对于语句:with EXPR as VAR: BLOCK
- 执行 EXPR,生成上下文管理器 context_manager;
- 获取上下文管理器的 exit() 方法,并保存起来用于之后的调用;
- 调用上下文管理器的 enter() 方法;如果使用了 as 子句,则将 enter() 方法的返回值赋值给 as 子句中的 VAR;
- 执行 BLOCK 中的表达式;
- 不管是否执行过程中是否发生了异常,执行上下文管理器的 exit() 方法,exit() 方法负责执行“清理”工作。
对于 with 与文件操作的结合,可以自动执行 exit() 方法关闭文件,防止编程人员忘记关闭。若文件打开后未使用 close() 进行关闭,则被打开的文件会一直被占用,其它进程无法对该文件进行读写,直到该程序运行结束。
3、分别简述你所了解的机器学习算法
1) .回归算法:
2) .基于实例的算法:
3) .决策树学习:
4) .贝叶斯方法:
5) .基于核的算法:
6) .聚类算法:
7) .降低维度算法:
8) .关联规则学习:
9) .集成算法:
10) .人工神经网络:
1、请利用 matplotlib 编写一个程序,画出函数 y = x2 + 18 的图像,并给图表和坐标轴加上标题。
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
x=np.linspace(-20,20)
y=x*x+18
plt.plot(x,y,'r')
plt.xlabel('x轴')
plt.ylabel('y轴')
plt.title('y=x*x+18的图像')
plt.grid()
plt.show()
2、素数排位:已知素数序列为 2、3、5、7、11、13、17、19、23、29⋯⋯,即素数的第一个是 2,第二个是 3,第三个是 5⋯⋯那么,随便挑一个数,若是素数,能确定是第几个素数吗?如果不是素数,则输出 0。
def f(x):
for i in range(2, x):
if(x%i==0):
return 0
return x
x=int(input())
count =0
if f(x):
for i in range(2,x+1):
if f(i):
count+=1
print(count)
else:
print('0')