DIKW
DATA-->INFOMATION-->KNOWLEDGE-->WISDOM
数据-->信息-->知识-->智慧
爬虫-->数据库-->数据分析-->机器学习
信息:通过某种方式组织和处理数据,分析数据间的关系,数据就有了意义
知识:如果说数据是一个事实的集合,从中可以得出关于事实的结论。那么知识(Knowledge)就是信息的集合,它使信息变得有用。知识是对信息的应用,是一个对信息判断和确认的过程,这个过程结合了经验、上下文、诠释和反省。知识可以回答“如何?”的问题,可以帮助我们建模和仿真
智慧:智慧可以简单的归纳为做正确判断和决定的能力,包括对知识的最佳使用。智慧可以回答“为什么”的问题。回到前面的例子,根据故障对客户的业务影响可以识别改进点
数学
微积分
复制代码
1 # import math
2 # s = 0
3 # for i in range(1, 1001):
4 # x = (math.pi / 1000) * i
5 # y = math.sin((math.pi / 1000) * i)
6 # s = (math.pi / 1000) * y + s
7 # print(s)
复制代码
复制代码
1 # import numpy as np
2 # def sin_integral(l,r,p):
3 # sum_result = 0
4 # delta = (r - l) / p
5 # for i in range(p):
6 # left = i * delta
7 # delta_area = delta * np.sin(left)
8 # sum_result += delta_area
9 # return sum_result
10 # print(sin_integral(0.0,np.pi,100000))
复制代码
numpy
复制代码
1 # coding=utf-8
2 import numpy as np
3 import matplotlib.pyplot as pt
4
5 # x的3次方
6 # X = np.linspace(-100, 100, 100)
7 # Y = X * X * X
8
9 # tan
10 # X = np.linspace(-np.pi//2,np.pi//2,1000)
11 # Y = np.tan(X)
12
13 # log
14 # X = np.linspace(-10,10,100)
15 # Y = np.log(X)
16 #
17 # pt.plot(X, Y)
18 # pt.show()
19
20 # -----------------------------------------------------------------------
21
22 # 鸡兔同笼
23 # for x in range(36):
24 # y = 35 - x
25 # if x+2*y == 47:
26 # print(x,y)
27
28 # sinx面积0-pi
29 # import math
30 # s = 0
31 # for i in range(1, 1001):
32 # x = (math.pi / 1000) * i
33 # y = math.sin((math.pi / 1000) * i)
34 # s = (math.pi / 1000) * y + s
35 # print(s)
36 # 承上封装为函数
37 # import numpy as np
38 # def sin_integral(l,r,p):
39 # sum_result = 0
40 # delta = (r - l) / p
41 # for i in range(p):
42 # left = i * delta
43 # delta_area = delta * np.sin(left)
44 # sum_result += delta_area
45 # return sum_result
46 # print(sin_integral(0.0,np.pi,100000))
47
48 # --------------------------------------------------------
49 # a = np.arange(18).reshape(3, 6) #二维数组矩阵
50 a = np.arange(24).reshape(2,3,4) #三维数组矩阵
51 # print a
52 # print a.ndim #矩阵维数
53 # print np.ndim([[1,1],[2,2]]) #矩阵维数
54 # print a.dtype.name #数值类型 int32
55 # print a.size #元素个数
56 # print a.itemsize #每个数组元素的字节大小
57 # print type(a) #a的类型
58
59 b = np.array([[1.2, 2, 3], [4, 5, 6]])
60 # print b.dtype #float64类型的数组
61
62 c = np.array([[1, 1], [2, 2]], dtype=complex)
63 # print c,c.dtype #复数类型complex128类型的数组
64
65 z = np.zeros((3, 4))
66 # print z #创建全零数组,默认为float64形式
67
68 o = np.ones((2, 3, 4), dtype=np.int16)
69 # print o
70 # 创建一个三维全1的数组,并且创建时指定类型,可以认为是一个长方体里有序的充满了1
71 #两层,每一层是三行四列的二维数组
72
73 e = np.empty((2,3))
74 # print e #创建一个二维空数组,电脑不同显示不同
75
76 # f = np.arange(1,9,2)
77 f = np.arange(0,3,0.5)
78 # print f #[1 3 5 7],2和0.5为步进值
79
80 # print np.arange(10000) #如果数组太大而无法全部打印,NumPy会自动跳过中央部分,只能打印出边界部分(首尾)
81 # np.set_printoptions(threshold='nan') #禁用此省略并强制NumPy打印整个数组,使用set_printoptions更改打印选项
82 # print np.arange(10000).reshape(100,100)
83
84 a = np.array([20,30,40,50])
85 b = np.arange(4)
86 # print a-b #相减
87 # print b**2 #平方
88 # print 10*np.sin(a) #a数组先进行sin运算,然后结果乘10
复制代码
运算
阶乘
复制代码
np.math.factorial(100)
复制代码
对数
np.log()
开方
1.准备每一个条件的数据表示 2.准备程序的逻辑 3.将你的数据应用到逻辑 4.优化结构
复制代码
1 # np.sqrt(3)
2
3 # A = (2, 7)
4 # B = (8, 3) # 欧几里得距离
5 # AB = np.sqrt((A[0] - B[0]) ** 2 + (A[1] - B[1]) ** 2)
6 # print AB
复制代码
三角函数
np.arctan()
np.cos()
np.sin()
np.rad2deg()——弧度转角度
np.deg2rad——角度转弧度
……
复制代码
1 # x = np.array([3, 0]) + np.array([0, 3])
2 # x = np.array([3,3])
3 # l = np.linalg.norm(x) #矢量x的范数(长度)
4 # h = np.arctan(3.0/3.0) #计算弧度 π/4
5 # j = np.rad2deg(h) #弧度转角度 45度
6 # np.deg2rad() #角度转弧度
7 # print j
复制代码
点乘
numpy数组 (矢量) 默认的 +-*/ 操作都是对应位置的元素相操作
复制代码
1 array1.dot(array2)
2
3 # d1 = np.array([2, 7])
4 # d2 = np.array([8, 3])
5 # print d1.dot(d2) #点乘(内积) 2*8+7*3 结果:实数
复制代码
复制代码
1 # 余弦相似度,向量内积,对应元素相乘再相加
2 '''
3 设两个向量分别为a=(x1,y1),b=(x2,y2),
4 其夹角为α,因为ab=|a||b|cosα,
5 所以cosα=ab/|a||b|=(x1y1+x2,y2)/(根号(x1^2+y1^2)根号(x2^2+y1^2))
6 '''
7 # d12 = d1.dot(d2) #d1·d2
8 # d1_len = np.linalg.norm(d1) #|d1|
9 # d2_len = np.linalg.norm(d2) #|d2|
10 # cosa = d12 / (d1_len * d2_len) #余弦值cosa
11 # a = np.rad2deg(np.arccos(cosa)) #角度a
12 # print a
复制代码
复数
复制代码
1 # a = 1 + 2j #复数 complex
2 # b = 2 + 3j #泰勒级数,傅里叶级数
3 # print a,type(a),a*b,a-b
复制代码
复制代码
1 # np.nan #not a number 当数据读取缺失或计算异常时会出现,本质是一个浮点数
2 # np.exp(10) #以e为底的指数
3 # np.log(10) #以e为底的对数,即ln
4 # np.e #e,2.71828182
5 # np.inf #无穷大
复制代码
函数
空数组
默认值是0或正无穷或负无穷
实数在计算机里只能用浮点数无限逼近精度,不能确切表示,所以在处理0的时候要格外小心 ;a - b < 0.1e-10 相减的时候当结果小于一个极小的数值就认为相等
np.empty((3, 3))
数组
矢量是有方向和长度的变量,可以用numpy的多位数组来表示,二维矢量就是平面的一个点
复制代码
1 np.array([[1,2,3],[4,5,6]])
复制代码
范数
矢量的范数(长度)
复制代码
np.linalg.norm(np.array([3,3]))
复制代码
类型转换
复制代码
1 array.astype(np.int)
复制代码
数组信息
复制代码
1 array.shape
2 array.shape[0]
3 array.shape[1]
复制代码
复制代码
1 # 使用两个矢量相减,可以计算两点距离
2 d1 = np.array([2, 7])
3 # d2 = np.array([8,3])
4 # np.linalg.norm(d1-d2)
5 # d1.astype(np.int) #将数组类型强制转换为int
6 # d1.shape #返回数组的行列数
7 # d1.shape[0] #返回数组的行数
8 # d1.shape[1] #返回数组的列数
复制代码
均分
# np.linspace()
复制代码
1 # xs = np.linspace(-1000, 1000, 10000)
2 # idx = []
3 # max_result = []
4 # for x in xs:
5 # y = -3 * (x ** 2) + 5 * x - 6
6 # idx.append(x)
7 # max_result.append(y)
8 # print max(max_result),idx[max_result.index(max(max_result))]
9
10 # def poly_test(l,r):
11 # r_len = r - l
12 # max_num = l
13 # m_idx = l
14 # for i in range(r_len):
15 # r_num = l + i
16 # result = (r_num ** 2) * -3 + (5 * r_num) - 6
17 # if result > max_num:
18 # max_num = result
19 # m_idx = i
20 # return max_num,m_idx
21 # print poly_test(-10000,10000)
复制代码
复制代码
1 # 在X轴上生成2000个从-10000到10000的离散点
2 # 使用矢量计算直接生成对应上述多项式的所有结果,这里没有使用循环,一次计算了20000个结果
3 # X = np.linspace(-1000, 10000, 20000)
4 # Y = (X ** 2) * -3 + 5 * X - 6 # 矢量运算,计算机会加速此类运算
5 # Y.max() # 获取当前矢量的最大值
6 # Y.argmax() # 获取当前数组最大值对应的索引(X值,不是函数中的X)
复制代码
数组切片
二维数组
复制代码
1 n_array = np.arange(25).reshape(5, 5)
2 # print n_array #第一个数选行,第二个选列
3 # print n_array[:,:2] #前两列
4 # print n_array[:3,:] #前三行
5 # print n_array[1:4,1:4] #1-3行且1-3列
6 # print n_array[2,2] #第3行的第3个数
7 # print n_array[2][2] #同上
8 # print n_array[::-2] #隔行选择
9 # print n_array[::2]
复制代码
三维数组
复制代码
1 n3_array = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [3, 2, 1]], [[6, 5, 4], [9, 8, 7]]])
2 # print n3_array #第一个数选层,第二个数选行,第三个数选列
3 # print n3_array[:,:,2] #最后一列
4 # print n3_array[:,:1,:].sum() #每一层的第一行
5 # print n3_array[:1,:,:].mean() #平均值
6 # print n3_array[:,1,:2].std() #方差小,更稳定
复制代码
数组元素选取
复制代码
1 # d1 < 3 #返回满足条件的布尔类型矩阵
2 # np.count_nonzero(d1 < 3) #统计数组中小于3的元素个数
3 # d1[d1<3] #选出指定范围的元素
复制代码
学生成绩案例
数据准备
复制代码
1 # score_array = np.loadtxt(open('score.csv', 'rb'), delimiter=',', dtype=int)
2 score_array = np.genfromtxt('score.csv', delimiter=',', dtype=int)
3 students = []
4 courses = ['数学', '语文', '化学', '地理', '音乐', '体育']
复制代码
课程成绩最好
复制代码
1 def course_score():
2 course_score_max = 0
3 cid_max = -1
4 for c in range(6):
5 course_score = score_array[:, c].sum()
6 print course_score
7 if course_score_max < course_score:
8 course_score_max = course_score
9 cid_max = c
10 return courses[cid_max], course_score_max
复制代码
学生成绩最好
复制代码
1 def student_score():
2 student_score_max = 0
3 sid_max = -1
4 for s in range(6):
5 student_score = score_array[s, :].sum()
6 print '{}号学生成绩:{}分'.format(s, student_score)
7 if student_score_max < student_score:
8 student_score_max = student_score
9 sid_max = s
10 return '{}号学生成绩最好,总分为{}分'.format(sid_max, student_score_max)
复制代码
学生偏科
复制代码
1 def pian():
2 pian_max = 0
3 pid_max = -1
4 for p in range(6):
5 student_score_std = score_array[p, :].std()
6 print '{}号学生成绩方差为:{}'.format(p, student_score_std)
7 if pian_max < student_score_std:
8 pian_max = student_score_std
9 pid_max = p
10 return '{}号学生偏科,方差为:{}'.format(pid_max, pian_max)
复制代码
主课成绩最好
复制代码
1 def main_course_score():
2 main_course_score_max = 0
3 cid_max = -1
4 for c in range(3):
5 main_course_score = score_array[:, c].sum()
6 print main_course_score
7 if main_course_score_max < main_course_score:
8 main_course_score_max = main_course_score
9 cid_max = c
10 return cid_max, main_course_score_max
复制代码
该班主课副课对比哪个成绩好
复制代码
1 def than():
2 main_course_std = 0
3 side_course_std = 0
4 for t in range(3):
5 main_course_std += score_array[:, t].std()
6 main_course_std /= 3
7 for t in range(3, 6):
8 side_course_std += score_array[:, t].std()
9 side_course_std /= 3
10 if main_course_std > side_course_std:
11 return '该班主课成绩更好'
12 else:
13 return '该班副课成绩更好'
复制代码
这个班有多少学生出现了不及格
复制代码
1 def bad():
2 badstudent = []
3 for b in range(6):
4 if min(score_array[b, :]) < 60:
5 badstudent.append(b)
6 # print '{}学生不及格'.format(b)
7 return '不及格学生:{}'.format(badstudent)
复制代码
封装成类
复制代码
1 name_dic = {0: '数学', 1: '语文', 2: '化学', 3: '地理', 4: '音乐', 5: '体育'}
2
3
4 class CoursaDesc(object):
5 def __init__(self):
6 self.name = ''
7 self.std = 0
8 self.max = 0
9 self.min = 0
10 self.mean = 0
11 self.num = 0
12
13
14 class ComputerDesc(object):
15 def __init__(self, n_array):
16 self.score_array = n_array
17 self.result = []
18
19 def counter_all_coursa(self):
20 for i in range(6):
21 c_desc = CoursaDesc()
22 c_desc.name = name_dic[i]
23 c_desc.std = self.score_array[:, i].std()
24 c_desc.mean = self.score_array[:, i].mean()
25 c_desc.max = self.score_array[:, i].max()
26 c_desc.min = self.score_array[:, i].min()
27 c_desc.sum = self.score_array[:, i].sum()
28 self.result.append(c_desc)
29
30 def best_coursa(self):
31 # std_list = [coursa.std for coursa in self.result]
32 # sum_list = [coursa.sum for coursa in self.result]
33 std_list = []
34 sum_list = []
35 for coursa in self.result:
36 std_list.append(coursa.std)
37 sum_list.append(coursa.sum)
38 std_array = np.array(std_list)
39 sum_array = np.array(sum_list)
40
41 max_sum_coursa = sum_array.max()
42 max_sum_index = sum_array.argmax()
43
44 min_std_coursa = std_array.min()
45 min_std_index = std_array.argmin()
46
47 if max_sum_index == min_std_index:
48 return name_dic[max_sum_index]
49 else:
50 # 方差最小的课程的成绩总和
51 min_std_coursa_sum = sum_array[min_std_index]
52 # 总和成绩最大的课程的方差
53 max_sum_coursa_std = std_array[max_sum_index]
54
55 sum_delta = max_sum_coursa - min_std_coursa_sum
56 std_delta = max_sum_coursa_std - min_std_coursa
57 sum_percent = sum_delta / max_sum_coursa
58 std_percent = std_delta / min_std_coursa
59 if sum_percent < 0.05 and std_percent > 0.2:
60 return name_dic[min_std_index]
61
62 if __name__ == '__main__':
63 c = ComputerDesc(score_array)
64 c.counter_all_coursa()
65 print c.best_coursa()
复制代码
标签: 数据分析
好文要顶 关注我 收藏该文
抿嘴唇
关注 - 4
粉丝 - 13
+加关注
0 0
« 上一篇:机器学习——信用卡反欺诈案例
posted @ 2018-10-22 19:29 抿嘴唇 阅读(96) 评论(0) 编辑 收藏
刷新评论刷新页面返回顶部
注册用户登录后才能发表评论,请 登录 或 注册,访问网站首页。
【推荐】超50万VC++源码: 大型组态工控、电力仿真CAD与GIS源码库!
【推荐】华为云11.11普惠季 血拼风暴 一促即发
【拼团】腾讯云服务器拼团活动又双叒叕来了!
【推荐】腾讯云新注册用户域名抢购1元起
腾讯云1023
最新IT新闻:
· “赋能开发者”高峰论坛暨西安葡萄城30周年庆典隆重举办
· RMS发布GNU友好交流指南
· 这个新发现,或能提高前列腺癌诊断精度
· 全新iPad Pro渲染图流出 这颜值必买
· 咖啡新世界之战:国产品牌能否复制手机市场的成功?
» 更多新闻...
最新知识库文章:
· 阿里云的这群疯子
· 为什么说 Java 程序员必须掌握 Spring Boot ?
· 在学习中,有一个比掌握知识更重要的能力
· 如何招到一个靠谱的程序员
· 一个故事看懂“区块链”
» 更多知识库文章...
公告
https://www.cnblogs.com/siplips/p/9832180.html