Python与机器学习-- 电影数据分析(线性回归) [自动保存的]
Python案例分析科学计算库练习之电影数据分析

Python案例 --电影数据分析Python案例 --电影数据分析一、课前准备二、课堂主题三、课堂目标四、案例-----电影数据分析1、项目背景2、概览数据3、分析过程,拆解项目3.1、读取数据3.2、数据清洗3.3、数据分析1. 电影发展趋势2. 电影情况分析3. 盈利问题4.电影评分及票房因素五、总结一、课前准备1. 复习之前知识点,特别是Pandas;2. 熟悉数据表;二、课堂主题本小节主要通过前面阶段知识内容, 完成Python案例分析。
三、课堂目标1. 掌握解决项目问题的能力;2. 掌握Python及科学计算的知识点;四、案例-----电影数据分析1、项目背景互联网电影资料库(Internet Movie Database,简称IMDb)是一个关于电影演员、电影、电视节目、电视明星和电影制作的在线数据库。
IMDb的资料中包括了影片的众多信息、演员、片长、内容介绍、分级、评论等。
对于电影的评分目前使用最多的就是IMDb评分。
数据源:movie_metadata.csv字段解释:-----------------------------------------电影描述字段------------------------------------------movie_title 电影题目language 语言country 国家 content_rating 电影分级 title_year 电影年份color 色彩 duration 片长genres 电影体裁/类型 plot_keywords:剧情关键字-----------------------------------------电影描述字段-----------------------------------------------------------------------------------电影制作字段------------------------------------------budget:制作成本gross 总收入 aspect_ratio :画布比例-----------------------------------------电影制作字段-----------------------------------------------------------------------------------电影阵容字段-----------------------------------------facenumber_in_poster海报中的人脸数量director_name 导演director_facebook_likes 导演facebook粉丝数actor_1_name 主演1姓名actor_1_facebook_likes 主演1Facebook粉丝数actor_2_name 主演2姓名actor_2_facebook_likes 演员2 的facebook粉丝数actor_3_name 演员3名字actor_3_facebook_likes 主演3Facebook粉丝数-----------------------------------------电影阵容字段----------------------------------------------------------------------------------电影评论字段-----------------------------------------num_voted_users 投票人数num_user_for_reviews 用户的评论数量num_critic_for_reviews 评论家评论数movie_facebook_likes脸书上被点赞的数量cast_total_facebook_likes Facebook上投喜爱的总数movie_imdb_link 电影数据链接imdb_score:imdb上的评分-----------------------------------------电影评论字段-----------------------------------------2、概览数据查看概览数据,熟悉字段,以及相应格式。
Python线性回归算法【解析解,sklearn机器学习库】

Python线性回归算法【解析解,sklearn机器学习库】⼀.概述⼆.代码实现【解析解】1import numpy as np2import matplotlib.pyplot as plt34__author__ = 'zhen'56# 这⾥相当于是随机X维度X1,rand是随机均匀分布7 X = 2 * np.random.rand(100, 1)8# ⼈为的设置真实的Y⼀列,np.random.randn(100, 1)是设置error,randn是标准正太分布9 y = 3 + 6 * X + np.random.randn(100, 1)10# 整合X0和X111 X_b = np.c_[np.ones((100, 1)), X] #combine聚合两数据集12# print(X_b)1314# 常规等式求解theta15# invert16 theta_best = np.linalg.inv(X_b.T.dot(X_b)).dot(X_b.T).dot(y)17print(theta_best)1819# 创建测试集⾥⾯的X120 X_new = np.array([[0], [2]])21 X_new_b = np.c_[(np.ones((2, 1))), X_new]22print(X_new_b)23 y_predict = X_new_b.dot(theta_best)24print(y_predict)2526 plt.plot(X_new, y_predict, 'r-')27 plt.plot(X, y, 'b.')28 plt.axis([0, 2, 0, 15])29 plt.show()三.结果【解析解】 可视化:四.代码实现【sklearn机器学习库】1import numpy as np2import matplotlib.pyplot as plt3from sklearn.linear_model import LinearRegression45__author__ = 'zhen'67 X = 2 * np.random.rand(100, 1)8 y = 3 + 6 * X + np.random.randn(100, 1)910 lin_reg = LinearRegression()11 lin_reg.fit(X, y)12print(lin_reg.intercept_, lin_reg.coef_)1314 X_new = np.array([[0], [2]])15 y_predict = lin_reg.predict(X_new)16print(y_predict)1718# 可视化19 plt.plot(X_new, y_predict, 'r-')20 plt.plot(X, y, 'b.')21 plt.axis([0, 2, 0, 15])22 plt.show()五.结果【sklearn机器学习库】 可视化:六.总结 根据图⽰可以得出结论,使⽤解析解或者是sklearn机器学习库都可以得到⼤致的结论,所花费时间和达到的效率都⽐较类似。
python代码实现回归分析--线性回归

python代码实现回归分析--线性回归python代码实现回归分析--线性回归科技爱好者#概念篇:#⼀下是我⾃⼰结合课件理解的,如果理解的有问题,期望看到的⼈能够好⼼告诉我⼀下,我将感激不尽~#1.什么数据建模? 通过原有数据找到其中的规律,并总结成模型.#2.什么是模型概念? 通过规律总结的模型,来预测⾃变量的结果(因变量).#3.什么是回归分析? 是⽤来解释⾃变量和因变量之间关系的⼀种⽅法.#4.什么是线性回归? 回归分析的⼀种,评估⾃变量和因变量是⼀种线性关系的的⼀种⽅法.#5. 什么是⼀元线性回归? 就是⾃变量只有⼀个的线性回归(影响元素只有⼀种).#6. 什么是多元线性回归? 就是⾃变量是多个的线性回归(影响元素不⽌⼀种).#7. 什么是拟合? 回归分析的具体实现⽅式(构建出最能串联现实实际情况的算法公式)#8. 什么是模型参数? 就是能够解释⾃变量和因变量关系的参数.#代码表⽰篇:#⼀元线性回归程序:#1.基本⼯具导⼊.import numpy as np#调科学计算包中线性模块⾥的线性回归函数from sklearn.linear_model import LinearRegression#条⽤科学计算包中的⽅法选择模块⾥的⽤于切分测试集和训练集的函数.from sklearn.model_selection import train_test_split#2.建造数据#随机数种⼦,事先设置之后,就能固定值随机数.#PS:0可以理解成这组随机数的编号,只要在下边填写同样编号得到的数值是同⼀组随机数数值.np.random.seed(0)#从-10到10之间的100个等差数列(属于连续性数组)x = np.linspace(-10,10,100)#设置⼀个线性回归公式y = 0.85*x - 0.72#创建⼀组数量为100,均值为0,标准差为0.5的随机数组.e = np.random.normal(loc = 0,scale = 0.5,size = x.shape)#将变量y加上这个变量ey += e#将x转换为⼆维数组,因为fit⽅法要求x为⼆维结构.x= x.reshape(-1,1)lr = LinearRegression()#x:被划分的特征集,y:被划分的标签,test_size:样本的占⽐(如果是整数表⽰样本的数量),random_state:随机数种⼦编号X_train,X_test,y_train,y_test = train_test_split(x,y,test_size = 0.25,random_state=0)#拟合数据函数:(X_train,y_train)#拟合后可利⽤lr.coef和lr.intercept取出(w))权重和(b))截距.print('权重',lr.coef_)print('截距',lr.intercept_)#从训练集学习到了模型的参数(w与b),确定⽅程,就可以进⾏预测了.#定义⼀个预测函数y_hat = lr.predict(X_test)#⽐对⼀下预测的y值与实际y值print("实际值:",y_test.ravel()[:10])print("预测值:",y_hat[:10])import matplotlib as mplimport matplotlib.pyplot as plt#画布初始设定:mpl.rcParams[""] = "SimHei"mpl.rcParams["axes.unicode_minus"] =False#将训练集和测试集⽤散点形式表现plt.scatter(X_train,y_train,s = 15,label = '训练集') plt.scatter(X_test,y_test,s = 15,label = '测试集')#将预测结果⽤直线画出plt.plot(x,lr.predict(x),"r-")#显⽰说明plt.legend()#⽤图标表⽰出真实值与预测值plt.figure(figsize = (15,5))plt.plot(y_test,label = "真实值",color = "r",marker = "o") plt.plot(y_hat,label = "预测值",color = "g",marker = "o") plt.xlabel("测试集数据序号")plt.ylabel("数据值")plt.legend()#线性回归模型评估from sklearn.metrics import mean_squared_error,mean_absolute_error,r2_scoreprint("平均⽅误差(MSE):",mean_squared_error(y_test,y_hat))print("根均⽅误差( RMSE):",mean_absolute_error(y_test,y_hat))print("平均绝对值误差(MAE):",r2_score(y_test,y_hat))from sklearn.linear_model import LinearRegressionfrom sklearn.metrics import mean_absolute_errorfrom sklearn.model_selection import train_test_split#make_regression ⽤来⽣成样本数据,⽤于回归模型from sklearn.datasets import make_regression# n_sampless:⽣成样本个体的数量#n_features: 特征数量(x的数量)#bias:偏置值.#random_state :随机种⼦#noise:噪⾳#⽣成线性回归的样本数据# n_sampless:⽣成样本个体的数量#n_features: 特征数量(x的数量)#coef: 是否返回权重.ture 返回,false不返回#bias:偏置值.#random_state :随机种⼦X,y,coef = make_regression(n_samples=1000,n_features=2,coef=True,bias=5.5,random_state=0) X_train,X_test,y_train,y_test = train_test_split(X,y,test_size = 0.25,random_state=0)print("实际权重:",coef)lr = LinearRegression()(X_train,y_train)print("模型权重:",lr.coef_)print("截距:",lr.intercept_)y_hat = lr.predict(X_test)print("均⽅误差:",mean_absolute_error(y_test,y_hat))print("训练集R~2:",lr.score(X_train,y_train))print("训练集R~2:",lr.score(X_test,y_test))。
python线性回归实验——【机器学习与算法分析】

实验算法python线性回归实验【实验名称】Python线性回归实验【实验要求】掌握Python线性回归模型应用过程,根据模型要求进行数据预处理,建模,评价与应用;【背景描述】线性回归是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法,运用十分广泛。
其表达形式为y = w'x+e,e为误差服从均值为0的正态分布。
【知识准备】了解线性回归模型的使用场景,数据标准。
了解Python/Spark数据处理一般方法。
了解spark 模型调用,训练以及应用方法【实验设备】Windows或Linux操作系统的计算机。
部署Python,本实验提供centos6.8环境。
【实验说明】采用成绩数据集作为算法数据,对模型进行训练和回归。
【实验环境】Pyrhon3.X,实验在命令行python中进行,或者把代码写在py脚本,由于本次为实验,以学习模型为主,所以在命令行中逐步执行代码,以便更加清晰地了解整个建模流程。
【实验步骤】第一步:启动python:命令行键入python,启动python终端第二步:导入用到的包,并读取数据:1(1).导入包:import numpy as npimport pandas as pdimport statsmodels.formula.api as smfimport scipy(2).读取数据并随机打乱,文件路径为:/opt/algorithm/scoreset/scoregather.txtdf=pd.read_csv("/opt/algorithm/scoreset/scoregather.txt",index_col=0,header=0).sample(f rac=1)(3).展示数据df.head()第三步:数据预处理说明,数据集包含25门已修学科,以及一门目标学科(1).划分训练集,测试集PP = 0.8df_train = df.iloc[:int(np.ceil(len(df) * PP))]df_test = df.iloc[int(np.ceil(len(df) * PP)):]2(2).数据标准化,获取每列均值,标准差avg_col = df_train.mean()td_col = df_train.std()(3).标准化结果df_train_norm = (df_train - avg_col) / td_coldf_train_norm.head()第四步:特征提取及线性回归模型训练基于F检验的特征选择(1).由于建模需要标准化字符串,故需重命名表头list_columns_to_train = df_train_norm.columns3change_columns = ['A' + str(zr + 1) for zr in np.arange(len(list_columns_to_train))]df_train_norm.columns = change_columnsco = dict(zip(change_columns, list_columns_to_train))def R_transform(data=[], k=0):r_L = data[k][k]shape = np.mat(data).shapeR_t = np.zeros(shape)for i in np.arange(shape[0]):for j in np.arange(shape[1]):if (i == k) & (j != k):R_t[i][j] = data[k][j] / r_Lelif (i != k) & (j == k):R_t[i][j] = -1 * data[i][k] / r_Lelif (i == k) & (j == k):R_t[i][j] = 1.0 / r_Lelif (i != k) & (j != k):R_t[i][j] = data[i][j] - data[i][k] * data[k][j] / r_Lreturn R_tdef forward_step(data, response="", F_in=0.01, F_out=0.5):remaining = list(data.columns)last_drop = ""Vld = "mark"n = len(data)# 因变量选择列4selected = []l = len(selected)# 计算相关系数矩阵corr_R = data.corr()mark = 1while (mark):# 首次变量选择if l != (len(data.columns) - 1):r_taget = pd.Series(np.diagonal(np.mat(corr_R)))r_taget.index = remainingVi = corr_R[response] ** 2 / r_tagetVc = Vi.drop(selected + [response], axis=0).sort_values()[-1]Vl = Vi.drop(selected + [response], axis=0).sort_values().index[-1]if Vld == last_drop:mark = 0elif Vld != last_drop:Fi = Vc * (n - l - 2) / (r_taget[response] - Vc)F_test = scipy.stats.f.isf(F_in, 1, (n - l - 2))if Fi > F_test:selected.append(Vl)l = len(selected)# 协方差矩阵转换corr_R = pd.DataFrame(R_transform(np.array(corr_R), remaining.index(Vl)))5corr_R.index = data.columnscorr_R.columns = data.columnsif l >= 2: # 考虑剔除变量for i in np.arange(len(selected)):rd_taget = pd.Series(np.diagonal(np.mat(corr_R)))rd_taget.index = remainingVid = corr_R[response] ** 2 / rd_tagetVcd = Vid[selected].sort_values(ascending=False)[-1]Vld = Vid[selected].sort_values(ascending=False).index[-1]Fd = Vcd * (n - (l - 1) - 2) / rd_taget[response]F_test_out = scipy.stats.f.isf(F_out, 1, (n - (l - 1) - 2))if (Fd < F_test_out):selected.remove(Vld)last_drop = Vldcorr_R = pd.DataFrame(R_transform(np.array(corr_R), remaining.index(Vld)))corr_R.index = data.columnscorr_R.columns = data.columnsl = len(selected)else:mark = 0else:mark = 0return selected6select_list = forward_step(df_train_norm, response=change_columns[-1])select_list = change_columns[:2]# 线性回归模型训练formula = "{} ~ {} + 1".format(change_columns[-1], ' + '.join(select_list))model = smf.ols(formula, df_train_norm).fit()print(model.summary())第五步:模型预测展示与结果对比# 模型预测展示# 利用训练集的统计信息标准化测试数据df_test_norm = (df_test - avg_col) / td_coldf_test_norm.columns = change_columnsdf_test_norm.head7#模型预测展示#利用训练集的统计信息标准化测试数据df_test_norm = (df_test - avg_col) / td_coldf_test_norm.columns = change_columns#预测结果还原百分制predict = model.predict(df_test_norm)predict_df = predict * td_col[-1] + avg_col[-1]#被选择特征反编码select_list_old = [co[z] for z in select_list]print(predict_df)print(select_list_old[0]);print(select_list_old[1])8#结果对比F = pd.DataFrame(df_test["目标学科"]).join(pd.DataFrame(predict_df))#回归残差,以及结果相关系数corr = F.corr()["目标学科"][0]stds = abs(F["目标学科"] - F[0]).sum() / len(F)# 输出程序运行摘要print("程序选择特征%s,预测结果相关系数is %s,回归残差is %s 分" % (",".join(select_list_old), corr, stds))第六步:通过以下命令执行python文件,直接查看运行结果python /opt/algorithm/scoreset/scorexpect.py9【问题与回答】1、Q:为什么要进行标准化,而且必须用正规化方法?A:线性回归基本假设之一,所有变量必须满足正态分布假设,但在实际操作上,我们一般利用正规化方法让数据近似于正态分布。
Python机器学习Python机器学习回归算法课件

• 在高中的数学知识体系中,我们寻找二次曲线的最
大值和最小值的方法是令导数为0,这样的方法也
可以用在求解回归算法的问题中。但是在机器学习
领域并不推崇这种思想,因为再实际应用中,使用
导数为0的方法,会增加计算机计算的复杂度,消
耗大量计算资源。而机器学习的求解方法则会在高
维空间的求解中体现出计算的优势。
8.1.4 初始值的选择与学习速率的选择
• 初始值的选择依托于所假设的数学模型,这
里的数学模型会在今后的章节讨论。不同的
数学模型反映在二次函数上则会是随机的初
始点。
• 速率的选择是以梯度下降思想的核心,选择
直接影响了最后结果的好坏以及整个算法的
效率。
• 1.过小,将导致无法找到最小值
• 如图8.6所示,初始点我们选择(100,100),
• 在此过程中每一步下降过程的坐标。
• 我们用梯度下降的方法实现了求解二次函数的最小值,虽
然他不像导数方法那么完美能直接定位到原点(0,0),
但是只要我们增加迭代次数,我们就能无限接近最小值点。
接下来,我们需要懂得,梯度下降的一些细节,比如每次
步长应该如何选择呢?如果步长选择太大,很有可能会越
过最小值点。
图8.12 初始化直线
• 如图8.14,我们设置学习速率,直线初始化
位置,右边图片记录了每次迭代直线的位
置。我们迭代124次,得到了最优的直线。
迭代过程,具体数据如表8.4所示。
• 图8.14 梯度下降法求最优曲线
8.2.3 理解“机器学习”中的“学习”
• 至此,我们通过梯度下降方法求解了机器学习
我们就可以走到山下。让我们一起来看一下,这个
线性回归 python

线性回归 python线性回归是一种常用的数据分析方法,它可以用来预测一个变量与另一个变量之间的关系,以判断其中一个变量影响另一个变量的多少程度。
它可以帮助用户在收集了某一数据之后,推断出其中存在的规律,如确定某种特定状况的出现的概率,从而对数据的理解更深入,采取有效的措施更有针对性。
在Python语言中,线性回归的应用非常广泛,它可以实现许多有用的功能,比如预测两个变量之间的关系、确定预测变量的权重、从不同角度检测回归模型的好坏等等。
在Python中,可以使用Numpy 和Scipy等著名的科学计算库的线性回归函数,轻松地实现线性回归分析功能,快捷、高效地完成线性回归任务。
首先,要实现线性回归分析,需要收集一些有关数据,并记录好变量的值,例如给定某个事物的购买量y和价格x的不同情况,其中x为自变量,y为因变量。
完成这一步后,可以使用Numpy提供的函数numpy.polyfit(),传入变量值作为参数,调用函数来拟合曲线,从而获得线性回归模型。
接着,可以使用Scipy提供的标准线性回归函数scipy.stats.linregress(),这个函数可以计算线性回归模型的回归系数和其他统计参数,例如相关系数、斜率、截距等,此外还可以计算残差的方差。
使用这些参数,就可以清楚地描述实际情况,从而判断线性回归模型是好是坏。
最后,Python也可以用来可视化线性回归的结果,例如使用Matplotlib库的pyplot模块,可以绘制出线性回归模型的拟合曲线,观察数据的走势情况,从而更加直观地分析线性回归模型的表现。
以上就是线性回归在Python中的一些应用例子,希望本文可以帮助读者更好地了解线性回归与Python的应用,结合Python的高效算法与图形可视化,可以有效地提高线性回归的分析效果。
用Python实现数据分析和机器学习

用Python实现数据分析和机器学习在本文中,我们将探讨Python在数据分析和机器学习方面的应用,并介绍如何在Python中使用这些库。
我们将学习如何处理数据和应用机器学习算法来解决一些实际问题。
一、Python在数据分析方面的应用Python可用于数据的获取、处理、转换、统计和可视化等方面的应用,例如获取网络数据、处理CSV、Excel和数据库等格式的数据文件。
1. 获取数据当我们从互联网上获取数据时,可以使用Python的requests和BeautifulSoup来爬取网页内容。
requests 库用于HTTP协议的网络数据获取,而 BeautifulSoup 库则用于HTML和XML文件内容的解析。
requests 和 BeautifulSoup的优秀组合可以帮助我们获取互联网上的数据并将其转换为Python中的数据对象。
2. 数据处理在Python中, Pandas 库是一个非常强大的数据处理库。
Pandas 可以将Excel、CSV和数据库等各种数据格式转换为Python的数据帧(DataFrames),从而方便地进行数据处理和操作。
Pandas的数据帧具有类似于Excel中的工作表的结构。
数据帧有多种功能,例如数据筛选,数据排序以及数据汇总等等。
3. 数据可视化Matplotlib 是Python的一个重要的数据可视化工具。
这个库可以用来生成各种图表和图形,例如散点图、折线图、柱状图等等。
Matplotlib 对于数据分析师或机器学习人员来说非常有用,因为它可以让你更直观的了解所获得的数据。
二、Python在机器学习方面的应用Python在机器学习方面的应用同样是非常广泛的,特别是Scikit-learn 和TensorFlow。
Scikit-learn是一个开源的机器学习库,提供了包括分类、回归、聚类、降维等多种算法。
TensorFlow是Google开发的深度学习库,是目前最受欢迎的深度学习框架之一。
Python机器学习LinearRegression(线性回归模型)(附源码)

Python 机器学习LinearRegression (线性回归模型)(附源码)LinearRegression (线性回归)1.线性回归简介线性回归定义:我个⼈的理解就是:线性回归算法就是⼀个使⽤线性函数作为模型框架(y =w ∗x +b )、并通过优化算法对训练数据进⾏训练、最终得出最优(全局最优解或局部最优)参数的过程。
y :我们需要预测的数值;w :模型的参数(即我们需要通过训练调整的的值)x :已知的特征值b :模型的偏移量我们的⽬的是通过已知的x 和y ,通过训练找出合适的参数w 和b 来模拟x 与y 之间的关系,并最终通过x 来预测y 。
分类: 线性回归属于监督学习中的回归算法; 线性回归作为机器学习的⼊门级算法,很适合刚接触机器学习的新⼿。
虽然线性回归本⾝⽐较简单,但是⿇雀虽⼩,五脏俱全,其中涉及到的“线性模型”、“⽬标函数”、“梯度下降”、“迭代”、“评价准则”等思想与其他复杂的机器学习算法是相通的,深⼊理解线性回归后可以帮助你更加轻松的学习其他机器学习算法。
2.线性回归模型解析2.1线性回归模型⽰意图2.2模型的组成部件 2.2.1 假设函数(Hypothesis function ) h w (x )=b +w 0x 0+w 1x 1+···+w n x n 使⽤向量⽅式表⽰:X = x 0x 1⋮x n ,W =w 0w 1⋮w n 则有:h w (x )=W T X +b [][] 2.2.2 损失函数:(Cost function) 这⾥使⽤平⽅差作为模型的代价函数 J(w)=12m∑mi=1(h w(x(i))−y(i))2 2.2.3 ⽬标函数:(Goal function) minimize(J(w)) 2.2.4 优化算法:(optimization algorithm) 梯度下降法(Gradient descent) 关于梯度下降法这⾥不详细介绍;3.使⽤python实现线性回归算法1#-*- coding: utf-8 -*-2import numpy as np3from matplotlib import pyplot as plt456#⽣成训练使⽤数据;这⾥线性函数为 y = 1.5*x + 1.37def data_generate():8#随机⽣成100个数据9 x = np.random.randn(100)10 theta = 0.5 #误差系数11#为数据添加⼲扰12 y = 1.5*x + 1.3 + theta*np.random.randn(100)13return x,y1415class LinearRegression():16'''17线性回归类18参数:19 alpha:迭代步长20 n_iter:迭代次数21使⽤⽰例:22 lr = LinearRegression() #实例化类23 lr.fit(X_train,y_train) #训练模型24 y_predict = lr.predict(X_test) #预测训练数据25 lr.plotFigure()⽤于画出样本散点图与预测模型26'''27def__init__(self,alpha=0.02,n_iter=1000):28 self._alpha = alpha #步长29 self._n_iter = n_iter #最⼤迭代次数3031#初始化模型参数32def initialPara(self):33#初始化w,b均为034return 0,03536#训练模型37def fit(self,X_train,y_train):38#保存原始数据39 self.X_source = X_train.copy()40 self.y_source = y_train.copy()4142#获取训练样本个数43 sample_num = X_train.shape[0]44# 初始化w,w045 self._w, self._b = self.initialPara()4647#创建列表存放每次每次迭代后的损失值48 self.cost = []4950#开始训练迭代51for _ in range(self._n_iter):52 y_predict = self.predict(X_train)53 y_bias = y_train - y_predict54 self.cost.append(np.dot(y_bias,y_bias)/(2 * sample_num))55 self._w += self._alpha * np.dot(X_train.T,y_bias)/sample_num56 self._b += self._alpha * np.sum(y_bias)/sample_num5758def predict(self,X_test):59return self._w * X_test + self._b6061#画出样本散点图以及使⽤模型预测的线条62def plotFigure(self):63#样本散点图64 plt.scatter(self.X_source,self.y_source,c='r',label="samples",linewidths=0.4) 6566#模型预测图67 x1_min = self.X_source.min()68 x1_max = self.X_source.max()69 X_predict = np.arange(x1_min,x1_max,step=0.01)70 plt.legend(loc='upper left')7172 plt.plot(X_predict,self._w*X_predict+self._b)73 plt.show()7475if__name__ == '__main__':76#创建训练数据77 x_data,y_data = data_generate()7879#使⽤线性回归类⽣成模型80 lr = LinearRegression()81 lr.fit(x_data,y_data)8283#打印出参数84print(lr._w,lr._b)85#画出损失值随迭代次数的变化图86 plt.plot(lr.cost)87 plt.show()88#画出样本散点图以及模型的预测图89 lr.plotFigure()9091#预测x92 x = np.array([3])93print("The input x is{0},then the predict of y is:{1}".format(x,lr.predict(x)))线性回归代码更多线性回归的代码参考github:Processing math: 100%。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Car 情报局
• 异常值处理主要用于非监督学习中,空间分布奇异点。比如:聚类(outlier)
四、去除奇异值(噪声)
异常值
#去除奇异点 df = df.loc[ (df['日均票房/万'] < 5000)]
条件:数值比较 df = df[ df['日均票房/万'] < 5000]
Car 情报局
五、归一化
Car 情报局
上机时间:8min
Car 情报局
• 数据分析与预测 • 数据可视化 • 实验报告步骤5-6 • 思考:如何画出直线?完成第7题
六、数据集的切分
Car 情报局
六、数据集的切分
Car 情报局
训练集(training set):训练集用于建立模型,简单的说就是通过训练集的数据确定拟合曲线的参数 验证集(validation set):模型选择(model selection),即做模型的最终优化及确定,用来辅助模型构
小结:10min随堂测
• 测一测你掌握了多少 • 计入课堂分(有没有认真听)
Car 情报局
• 作业完成情况
大数据1801:43人
大数据1802:48人
Car 情报局
• 实验报告上交格式:.html
全体都有:准备好英文听写
• 机器学习 • 有监督学习 • 分类 • 回归 • 聚类 • 降维 • 线性回归
验证集
测试集
train_test_split(sample_data,sample_target,test_size=0.25,train_size =None,random_state=0,stratify=y_train) • train_data:所要划分的样本特征集 • train_target:所要划分的样本类别数据 • test_size:测试样本占比,如果是整数的话就是样本的数量。默认是0.25 • train_size:训练样本的占比,如果指定了test_size按照test_size比例来
在机器学习领域中,不同评价指标(即特征向量中的不同特征就是所 述的不同评价指标)往往具有不同的量纲和量纲单位,这样的情况会影 响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据标 准化处理,以解决数据指标之间的可比性。
from sklearn.preprocessing import minmax_scale
Car 情报局
工作机理 目的
一、机器学习
• 定义
Car 情报局
计算机利用已有的数据(经验),得出了某种模型(规律),并利用此模型预测未来数据 特征的一种方法。
人类学习 VS 机器学习
一、机器学习
• 应用
范围 模式识别 数据挖掘 统计学习 计算机视觉 语音识别 自然语言处理
领域 机器学习 机器学习+数据库 统计+机器学习 图像处理+机器学习 语音处理+机器学习 文本处理+机器学习
蒙特利尔大学 Intel
支持语言
Python/C++/ Java/Go
Python/C++/ Matlab
Python/C++/ BrainScript
Python/C++/Matlab/ Julia/Go/R/Scala
C/Lua/
Python
Python
Car 情报局
支持系统
Linux/Mac OS/Android/iOS
归一化: Normalization
• 什么是归一化:
归一化是将有量纲的表达式,经过变换,化为无量纲的表达式,成为标量。
• 归一化的方法:
1)最大最小标准化(Min-Max Normalization) 2)Z-score标准化方法 3)非线性归一化
• 归一化的好处:
1)归一化后加快了梯度下降求最优解的速度; 2)归一化有可能提高精度(如KNN); 注:没有一种数据标准化的方法放在每一个问题、每一个模型,都能提高算法精度和加速收敛。
Car 情报局
上机时间:15min
• 数据采集 • 数据清洗 • 实验报告步骤1-2
Car 情报局
二、数据分析
测试数据集 x_test
Car 情报局
x_train 训练数据集
y_train
机器学习 fit( ) 算法
模型
predict( )
输出结果 y_pred
y_test
评估 报告
from sklearn import linear_model x=df['放映天数'] y=df['日均票房/万'] regr = linear_model.LinearRegression() 第4行:建立线性回归方程 regr.fit(x, y) 第5行:线性回归拟合(训练)
Linux/Mac OS/Windows
Linux/Windows
Linux/Mac OS/ Windows/Android/iOS
Linux/Mac OS/ Windows/Android/iOS Linux/Mac OS/Windows
Linux
一、机器学习
• 框架
Car 情报局
库名
学习材料 丰富程度
三、数据预测与可视化展现
import matplotlib.pyplot as plt
图中有中文的处理:为正确显示中文,此外要加什么代码?
plt.title(u'放映天数与票房关系图(一元线性回归分析)') plt.xlabel(u'放映天数') plt.ylabel(u'日均票房收入\万元') plt.scatter(x, y, color='black’)
电影数据分析(线性回归)
Car 情报局
知识回顾
重点: • Python工具包的使用:
numpy\pandas\matplotlib • 数据统计与分析流程 • 柱状图(子图、标签) 难点: • 数据可视化的进阶实现
Car 情报局
作业: 配置数据分析环境、实验报告
主要教学内容
机器学习
有监督学习 线性回归 一元线性回归
建,它是可选的。 测试集(test set):是用来检验最终选择的模型的性能。
训练集
验证集
测试集
六、数据集的切分
Car 情报局
from sklearn.model_selection import train_test_split
引入包:引入模型选择模块的train_test_split
#拆分训练集和测试集
实验报告相关练习
Car 情报局
四、异常值(噪声)
异常值
Car 情报局
异常值
Car 情报局
数据集中存在不合理的值,又称离群点、噪声,会引致预测结果不准确或无法收敛…
发现异常值的方法:
• 1)简单统计分析
• 2)3δ原则
• 3)箱形图分析
异常值
异常值的处理方法常用有四种: 1. 删除含有异常值的记录 2. 将异常值视为缺失值,交给缺失值处理方法来处理 3. 用平均值来修正 4. 不处理
Car 情报局
一、机器学习
Car 情报局
•
监方督法学习:从带标签(标注)的训练样本中建立一个模式(模型),并依此模式推测新
的数据标签的算法
无监督学习:在学习时并不知道其分类结果,其目的是去对原始资料进行分类,以
便了解资料内部结构算法
半监督学习:利用少量标注样本和大量未标注样本进行机器学习,利用数据分布上
x_train, x_test, y_train, y_test = train_test_split(df[[‘放映天数’]], df[[‘日均票房/万’]], train_size=0.8, test_size = 0.2)
调用接口:指定训练集与测试集的大小,返回的测试集与训练集切分结果。
训练集
• 导入的第三方包名 • 线性回归所在的模块名 • 使用的线性回归类名 • 日期类型转换函数 • 拟合函数 • 预测函数
Car 情报局
知识回顾:机器学习
• 定义
Car 情报局
计算机利用已有的数据(经验),得出了某种模型(规律),并利用此模型预测未来数据 特征的一种方法。
人类学习 VS 机器学习
知识回顾:线性回归
第3行:分隔符是什么?列名省略后,列名取自哪里?
df=df[['上映时间','闭映时间', '票房/万’]]
第4行:注意这句话的作用,区别第5与第4行代码换顺序的时候有什么区别。
df=df.dropna()
• delimiter=';’ • df=df[['上映时间','闭映时间', '票房/万']]
支持 向量机
随机森林
二、线性回归
Car 情报局
三、一元线性回归
Car 情报局
100个散点样本,求出回归方程 构建计算图
四、sklearn中线性回归实现
Car 情报局
项目二:电影数据分析与预测
film.txt
Car 情报局
一、数据准备
#coding:utf-8
import pandas as pd df= pd.read_csv('film.txt', delimiter=';')
CNN建模 能力
RNN建模 能力
易用程度
运行速度
多GPU支持 程度
TensorFlow ★★★
Caffe CNTK MXNet Torch Theano Neon