东北大学大数据班机器学习大作业——印度房价预测
目录
1、项目背景. 3
2、实验描述. 3
3、实验目的. 3
4、实验环境. 3
5、实验原理. 4
5.1 决策树. 4
5.2 随机森林. 4
5.3 数据预处理与特征工程. 4
5.4 主成分分析. 4
5.5 逻辑回归. 4
5.6 SVM支持向量机. 5
6、实验分析. 5
7、数据的初步探索. 5
7.1 数据集说明. 5
7.2 数据的读取和相关库. 7
7.3 异常值处理:. 8
7.3.1 经纬度异常. 8
7.3.2 房间数量异常. 9
7.3.3 处理字符串型特征. 9
7.3.4 相关性分析. 9
7.3.5 属性名空格与点处理. 9
7.3.6 重复值处理. 10
7.3.7 缺失值处理. 10
7.3.8 异常值处理. 10
7.4 数据的可视化分析. 11
7.4.1 POSTED_BY分析. 11
7.4.2 UNDER_CONSTRUCTION分析. 11
7.4.3 RERA是否批准分析. 12
7.4.4 BHK_NO房间数量分析. 13
7.4.5 BHK_OR_RK财产类型分析. 13
7.4.6 SQUARE_FT房子大小(英寸)分析. 14
7.4.7 READY_TO_MOVE是否准备移动分析. 14
7.4.8 RESALE是否转售分析. 15
7.4.9 LONGITUDE(原译为经度)纬度分析. 15
7.4.10 LATITUDE(原译为纬度)经度分析. 16
8、模型的构建与求解. 18
8.1 数据预处理与特征工程. 18
8.1.1 编码与哑变量. 18
8.1.2 特征选择. 18
8.2 主成分分析. 20
8.3 决策树模型. 22
8.3.1 划分数据集. 22
8.3.2 十折交叉验证. 22
8.3.3 构建学习曲线调节参数. 22
8.3.4 网格搜索调节参数. 24
8.4 随机森林模型. 24
8.4.1 划分数据集. 24
8.4.2 十折交叉验证. 25
8.4.3 构建学习曲线调节参数. 25
8.5 逻辑回归. 27
8.5.1 划分数据集. 27
8.5.2 模型建立. 27
8.5.3 构建学习曲线. 28
8.6 SVR支持向量机回归. 29
8.6.1 划分数据集. 29
8.6.2 模型构建. 29
9、总结与收获. 29
1、项目背景
准确预测房价是一项艰巨的任务。买家不只是关心房子的大小(平方英尺),还有其他各种因素(例如房子的地理位置,是否为二手房等等)在决定房子/房产的价格中起着关键作用。要找出有助于理解买方行为的正确属性集是极其困难的。我将通过设计算法来测试回归技能,以准确预测印度的房价。数据集已在印度各地的各种房地产聚合器中收集,该数据集一共12个影响因素,我将尽可能准确地预测价格。
此外,在本次挑战中,我将空间进行特征工程,并掌握高级回归技术,如随机森林以及各种其他集成技术。
通过相关性分析等初步筛选特征,随后通过RFE递归特征消除法,根据模型分数变化图来决定特征选择后的特征维度。
然后训练决策树模型,通过构建学习曲线调节参数、使用网格搜索调节参数等方法,找出模型的最优参数,得出模型准确率、方差等指标。
使用python数据分析的技术和机器学习的技术探究印度房价与各类因素的关联性,使用数据处理与回归分析完成美国房价的预测模型,并进行调参,努力获取最佳的模型。
5、实验原理
5.1 决策树
决策树(Decision Tree)是一种非参数的有监督学习方法,它能够从一系列有特征和标签的数据中总结出决策规则,并用树状图的结构来呈现这些规则,以解决分类和回归问题。决策树算法容易理解,适用各种数据,在解决各 种问题时都有良好表现,尤其是以树模型为核心的各种集成算法,在各个行业和领域都有广泛的应用。
5.2 随机森林
集成学习(ensemble learning)是时下非常流行的机器学习算法,它本身不是一个单独的机器学习算法,而是通过在数据上构建多个模型,集成所有模型的建模结果。基本上所有的机器学习领域都可以看到集成学习的身影,在现实中集成学习也有相当大的作用,它可以用来做市场营销模拟的建模,统计客户来源,保留和流失,也可用来预测疾病的风险和病患者的易感性。在现在的各种算法竞赛中,随机森林,梯度提升树(GBDT),Xgboost等集成算法的身影也随处可见,可见其效果之好,应用之广。
5.3 数据预处理与特征工程
数据预处理是从数据中检测,纠正或删除损坏,不准确或不适用于模型的记录的过程可能面对的问题有:数据类型不同,比如有的是文字,有的是数字,有的含时间序列,有的连续,有的间断。也可能,数据的质量不行,有噪声,有异常,有缺失,数据出错,量纲不一,有重复,数据是偏态,数据量太 大或太小数据预处理的目的:让数据适应模型,匹配模型的需求
特征工程是将原始数据转换为更能代表预测模型的潜在问题的特征的过程,可以通过挑选最相关的特征,提取特征以及创造特征来实现。其中创造特征又经常以降维算法的方式实现。 可能面对的问题有:特征之间有相关性,特征和标签无关,特征太多或太小,或者干脆就无法表现出应有的数 据现象或无法展示数据的真实面貌 特征工程的目的:1) 降低计算成本,2) 提升模型上限
5.4 主成分分析
在降维过程中,我们会减少特征的数量,这意味着删除数据,数据量变少则表示模型可以获取的信息会变少,模型的表现可能会因此受影响。同时,在高维数据中,必然有一些特征是不带有有效的信息的(比如噪音),或者有一 些特征带有的信息和其他一些特征是重复的(比如一些特征可能会线性相关)。我们希望能够找出一种办法来帮助 我们衡量特征上所带的信息量,让我们在降维的过程中,能够即减少特征的数量,又保留大部分有效信息——将那 些带有重复信息的特征合并,并删除那些带无效信息的特征等等——逐渐创造出能够代表原特征矩阵大部分信息的,特征更少的,新特征矩阵。
5.5 逻辑回归
线性回归对数据的要求很严格,比如标签必须满足正态分布,特征之间的多重共线性需要消除等等,而现实中很多真实情景的数据无法满足这些要求,因此线性回归在很多现实情境的应用效果有限。逻辑回归是由线性回归变化而 来,因此它对数据也有一些要求,而我们之前已经学过了强大的分类模型决策树和随机森林,它们的分类效力很强,并且不需要对数据做任何预处理
5.6 SVM支持向量机
从实际应用来看,SVM在各种实际问题中都表现非常优秀。它在手写识别数字和人脸识别中应用广泛,在文本和超文本的分类中举足轻重,因为SVM可以大量减少标准归纳(standard inductive)和转换设置(transductive settings)中对标记训练实例的需求。
本实验共包括两个部分,第一部分为数据的初步探索,第二部分为各类机器学习算法的应用,具体内容如下:
7.1 数据集说明
印度房价预测挑战的训练集名称为Train.csv,共有29451条数据,每条数据项包含12个字段数据,数据集的部分数据如下图所示:
对于数据集中所包含的12个属性的具体含义解释下所示。
编号 |
特征名 |
含义 |
值 |
|
1 |
POSTED _ BY |
分类标记谁列出了正在施工或未施工的财产 |
字符串型(dealer表示经销商,owner表示房屋的主任,builded表示房产的建设者) |
|
2 |
UNDER CONSTRUCTION |
施工中与否 |
整数型(0表示不在施工,1表示在施工中) |
|
3 |
RERA |
批准与否 |
整数型(0表示不批准,1表示批准) |
|
4 |
BHK _ NO . |
房间数量 |
整数型,表示房产中房间的数量 |
|
5 |
BHK _ OR _ RK |
财产类型 |
字符串型,一共有两种类型:BHK型以及RK型 |
|
6 |
SQUAREFT |
房屋的总面积(平方英尺) |
浮点数,以平方英尺为计量单位 |
|
7 |
READY _ TO _ MOVE |
类别标记是否准备移动 |
整数型,为离散型数据,1表示准备移动,0表示不准备移动 |
|
8 |
RESALE |
类别标记是否转售 |
整数型,为离散型数据,1表示转售,0表示不转售 |
|
9 |
ADDRESS |
物业的地址 |
字符串型,表示房产所属物业的地址 |
|
10 |
LONGITUDE |
属性的经度 |
浮点数,表示房产所在地理位置的经度 |
|
11 |
LATITUDE |
属性的纬度 |
浮点数,表示房产所在地理位置的纬度 |
|
12 |
TARGET(PRICE_IN_LACS) |
标签-预测房价(以拉丁美洲为单位的价格) |
浮点数,表示房产的价格,是我们房价预测挑战的标签 |
|
1、导入数据分析pandas、numpy、matplotlib三大库及其扩展库,并导入机器学习相关库,将字体设置为可显示中文,防止后续途中出现乱码。
2、使用pandas的.read_csv方法读取数据训练集Train.csv,读取数据集的代码如下:利用pandas自带的shape函数,可以发现,读取的数据集共29451条数据,共12列。
4、通过df_train.info()查看数据集中数据的总体信息,各个特征的类型,各个特征非空值的数量、数据集所占内存大小。
5、调用df_train.hist查看各特征的整体分布情况,可以发现,各个特征的取值都相对集中,基本都会集中在某一至两个范围内。
6、缺失值探索:通过调用pandas自带的isnull().sum()方法探索各个特征变量的缺失值个数,可以惊喜地发现,该Train.csv训练集居然没有任何缺失值。
7.3 异常值处理:
7.3.1 经纬度异常
7.3.2 房间数量异常
7.3.3 处理字符串型特征
7.3.4 相关性分析
7.3.5 属性名空格与点处理
7.3.6 重复值处理
7.3.7 缺失值处理
由前面的缺失值探索中可以发现,在印度房价预测中的数据集在缺失值处理方面堪称完美,数据集中完全没有缺失值,这在一定程度上减轻了我们的后续工作。
7.3.8 异常值处理
除此之外,在后面的特征工程中,POSTED_BY特征与BHK_OR_RK特征都是离散的分类型离散数据,分类的种类分别为2和3,于是利用特征工程中的处理分类型特征:编码与哑变量方法分别处理这两个特征。
7.4.1 POSTED_BY分析
POSTED_BY表示谁列出了财产清单,0表示Owner,房产主人拥有此房产;1表示Dealer,经销商拥有此房产;2表示Builder,建设者拥有此房产。
由上面扇形图所示:在印度,大部分的房产都是在经销商名下,占比高达总房产的61.3%;其次是私人房产,即住宅主人自己拥有的房子,占总房产的36.6%;最后是建设者拥有的房产数量,仅占总房产的2.14%;
7.4.2 UNDER_CONSTRUCTION分析
7.4.3 RERA是否批准分析
从下面箱线图可以看出,是否被批准对于房价高低集中程度的影响是不太明显的,不同的批准状态都是以低价房为主,同时两种批准状态都有少量的高价房,因此可以简略做出判断:“批准状态对房价高低的影响不大”。
7.4.4 BHK_NO房间数量分析
如下图所示:经过处理后的数据集,只有六种户型(房间数量分别为1,2,3,4,5,6)的房产
7.4.5 BHK_OR_RK财产类型分析
7.4.6 SQUARE_FT房子大小(英寸)分析
除此之外,还可以通过python里面的matplotlib得到房子大小的中位数,数值为1170.21。
7.4.7 READY_TO_MOVE是否准备移动分析
7.4.8 RESALE是否转售分析
7.4.9 LONGITUDE(原译为经度)纬度分析
如下图所示:在纬度方面,印度的房子分布不是特别集中,呈现多峰状态,可能跟印度的地形与海岸线有关联。印度在地理位置上,纬度的中位数为21.00,处于8°24′~37°36′的正常范围,可以接受。
7.4.10 LATITUDE(原译为纬度)经度分析
如下图所示:在经度方面,印度的房子分布不是特别集中,呈现多峰状态,可能跟印度的地形与海岸线有关联。印度在地理位置上,经度的中位数为77.34,处于8°24′~37°36′的正常范围,可以接受。
8.1 数据预处理与特征工程
该数据集共有本身共有11个特征和一个标签,但并非所有特征都是对建模有利的,有些特征不仅对建模没有贡献,还会干扰建模过程和结果,降低准确性。同时,特征过多不利于模型的泛化,还有可能造成模型的过拟合,即在训练集上表现十分优秀,但在测试集上表现很糟糕。所以应当采用一定的算法,进行特征选择处理,选出对模型最有贡献的特征,删除不重要甚至有消极影响的特征,保证模型的泛化能力和准确性。
8.1.1 编码与哑变量
OrdinalEncoder可以用来处理有序变量,但对于名义变量,只有使用哑变量的方式来处理,才能够尽量向算法传达最准确的信息:这样的变化,让算法能够彻底领悟,原来三个取值是没有可计算性质的,是“有你就没有我”的不等概念。在数据集中,POSTED_BY和BHK_OR_RK,都是这样的名义变量。因此需要使用独热编码,将两个特征都转换为哑变量。下面以POSTED_BY特征为例子,这个特征是一个三分类特征,我们可以将其分为三列,三列的取值分别用0或1来表示,每一行在三列的值中,当且仅当有一个的值为0.
最后处理完毕之后,得到一共13个特征和一个标签;我们将新的特征名修改后,得到的表头数据如下所示:
8.1.2 特征选择
8.1.2.1 过滤法
首先使用方差过滤,通过特征本身的方差来筛选特征,比如一个特征本身的方差很小,就表示样本在这个特征上基本没有差异,可能特征中的大多数值都一样,甚至整个特征的取值都相同,那这个特征对于样本区分没有什么作用。所以接下来优先消除方差为0的特征。由下图可以发现:数据集中没有方差为0的数据,因此使用方差过滤之后,数据集的维度不发生变化。
首先使用随机森林模型,进行一次简单的建模,查看数据在模型上的初步效果。得到0.9027分,一个相对不错的分数。
8.1.2.2 嵌入法
嵌入法是一种让算法自己决定使用哪些特征的方法,即特征选择和算法训练同时进行。在使用嵌入法时,先使用某些机器学习的算法和模型进行训练,得到各个特征的权值系数,根据权值系数从大到小选择特征。这些权值系数往往代表了特征对于模型的某种贡献或某种重要性。如下图所示,嵌入法筛选出来7个特征。
我们使用得到的这7个特征,再去使用模型评分,发现模型分数下降了0.007,嵌入法帮我们筛选了七个特征,大大节省了复杂度,模型评分下降地不多,也是可以接受的。
8.1.2.3 RFE算法
在这里选择RFE算法进行特征选择,首先设置保留特征个数的范围为[1,14],逐次迭代,每次迭代后都由五折交叉验证进行打分,最后将分数和此时的特征个数以图表形式呈现,以帮助我们判断应该选取多少个特征。
由于模型本身具有一定的随机性,模型的分数在小范围内随机变化,所以实验中选取得分排名高且基本稳定位于高排名的特征数量。
由上图可以看出,在选择9个特征时,模型得分最高,这个特征数量也会显著有利于模型的泛化。接着在训练集和测试集上分别用RFE算法进行特征选择,选出9个最重要的特征,通过筛选的特征如下:
8.2 主成分分析
当参数n_components中不填写任何值,则默认返回min(X.shape)个特征,画出累计可解释方差贡献率曲线,以此选择最好的n_components的整数取值。 累积可解释方差贡献率曲线是一条以降维后保留的特征个数为横坐标,降维后新特征矩阵捕捉到的可解释方差贡献率为纵坐标的曲线,能够帮助我们决定n_components最好的取值。下图可以发现,当n_components=3是,效果是最优的。
输入“mle”作为n_components的参数输入,mle为我们返回了三个特征,然而这三个特征的贡献率高达99.47%,三个特征就可以包含这么重要的信息量,可谓是特征少且贡献大,。
输入n_components等于一个浮点数,并且让参数svd_solver =='full',表示希望降维后的总解释性方差占比大于n_components 指定的百分比,即是说,希望保留百分之多少的信息量。比如说,如果我们希望保留97%的信息量,就可以输入 n_components = 0.97,PCA会自动选出能够让保留的信息量超过97%的特征数量,这此数据集中,pca给我们返回两个特征,表示这两个特征所包含的信息量就可以高达97%以上。
使用得到的特征进行建模,也可以得到0.9012这样的高分,与原始数据的0.9027相比,虽然分数降低了一点,但是复杂度降低了许多,因此PCA主成分分析对我们的模型起到了很关键的作用
8.3 决策树模型
8.3.1 划分数据集
将30%的数据集分成测试集,70%的数据集分成训练集。
简单导入模型,我们可以得到通过决策回归树对训练集的训练,在测试集上的得分达到了惊人的0.930分,这对于决策树来说,是一个相当高的分数了,表示模型拟合的很好,而且没有出现过拟合。
8.3.2 十折交叉验证
接着我们利用十折交叉验证对不同max_depth的决策树分别在训练集和测试集上面打分。由下图可以发现,在大部分情况下,训练集的评分都会高于测试集的得分,这也是属于正常现象,因为决策树确实比较容易出现过拟合现象。当max_depth=3时,此决策树的过拟合现象不是很明显,且训练集和测试集都有着不错的分数。
在默认参数情况下,决策树模型在训练集上score得分为1.0000,而在测试集上score得分仅为0.2118,二者相差巨大。
8.3.3 构建学习曲线调节参数
该参数表示决策树的最大深度,通过限制最大深度可以有效的解决决策树过拟合的问题。实验中固定决策树模型的random_state参数为25,在3到10的范围内进行调参,使用交叉验证的方式进行评分
通过观察学习曲线可以发现最高得分所对应的参数值为6,最高分数为:0.90866781。
通过观察学习曲线可以发现当min_samples_split为5时取得最高得分0.91076055因此后续实验使用该数值进行建模。
min_samples_leaf 参数表示叶子结点最少样本数这个值限制了叶子节点最少的样本数,如果某叶子节点数目小于样本数,则会和兄弟节点一起被剪枝。
实验中固定决策树模型的random_state参数为25,在1到30的范围内进行调参
8.3.4 网格搜索调节参数
网格搜索通过选定想要改动的参数,程序自动使用穷举法来将所用的参数都运行一遍。
8.4 随机森林模型
8.4.1 划分数据集
在默认参数情况下,决策树模型在训练集上score得分为0.9999,而在测试集上score得分仅为0.3680,二者相差巨大。
8.4.2 十折交叉验证
由下图可以看到,在默认参数下,此随机森林模型的评分只有0.8987…
8.4.3 构建学习曲线调节参数
通过观察学习曲线可以发现最高得分所对应的参数值为11,分数达到0.9025…,相比最原始的模型,分数有所提高。
接着我们在11的左右调节n_estimators,使得其更加精准更加有效。
通过观察学习曲线可以发现最高得分所对应的参数值为12,分数达到0.9034…,相比最原始的模型,分数再一次提高,后续实验使用该数值进行建模。
该参数表示树的最大深度,通过限制最大深度可以有效的解决树过拟合的问题。实验中固定random_state参数为90,在1到20的范围内进行调参,使用交叉验证的方式进行评分
通过观察学习曲线可以发现最高得分所对应的参数值为18,得分为9.45…,分数又有了进一步的提高,后续实验使用该数值进行建模。
通过观察学习曲线可以发现当max_features为8时取得最高得分0.905032…,较前有所提高,因此后续实验使用该数值进行建模。
min_samples_leaf 参数表示叶子结点最少样本数这个值限制了叶子节点最少的样本数,如果某叶子节点数目小于样本数,则会和兄弟节点一起被剪枝。
实验中固定random_state参数为90,在1到11的范围内进行调参
min_samples_split 参数表示内部节点再划分所需最小样本数,默认值为2。实验中固定random_state参数为90,在2到23的范围内进行调参,使用交叉验证的方式进行评分,如下图所示:
通过观察学习曲线可以发现当min_samples_split为11时取得最高得分0.906795…,因此后续实验使用该数值进行建模。
经过学习曲线调参之后,随机森林模型的分数提升了0.0080…
8.5 逻辑回归
8.5.1 划分数据集
8.5.2 模型建立
建立两个逻辑回归,L1正则化和L2正则化的差别就一目了然了:
如下图所示,不知为何,在最初的逻辑回归模型建立时,使用原始参数建立模型,竟然会得到了0.199154这样的超低分
使用嵌入法将数据降维,使得数据集只剩下5维,即只剩下五个特征。
将嵌入法得到的数据集,使用交叉验证评分,得到了0.37638这样的超低分(虽然较原始模型已经有了一些提高)
8.5.3 构建学习曲线
调逻辑回归的类LR_,通过画C的学习曲线,由下图可知,当C取0.01时,分数达到了相对较高0.0397254分(虽然还是超低分),不过也还是有进步了。
8.6 SVR支持向量机回归
8.6.1 划分数据集
8.6.2 模型构建
在初步学习了SVM之后,我在网上查阅了相关资料,想通过一下代码查看SVR的评估值,不够在运行了一天一夜之后,这个cell仍然不跑出任何的结果,实在让人绝望。
通过这门课,我学习了很多新的算法原理与运用,在此之前,我几乎从来在线下学习过机器学习,只是在暑假自学完全老师布置的暑假作业。因此,这次的机器学习实验对我而言,又是一个巨大的考验。
本次实验首先使用Python进行数据的读取、预处理工作,并使用数据分析的相关方法进行分析数据集中各特征字段与标签的联系。
本次实验使用机器学习的各类算法处理印度房价预测挑战,经过学习曲线和网格搜索等方法获取最佳的参数,调参后模型的交叉验证相较于默认参数的模型的精确度有所提高。
东北大学大数据班机器学习大作业——印度房价预测相关推荐
- 大数据与机器学习-大数据预测
大数据预测 量化交易 量化交易
- 吐血整理!内部包含3980大数据、机器学习、推荐系统实战课程,仅分享一次
在最近几年,大数据(Dig Data )机器学习(Machine Learning)逐渐流行开来,容易让人误以为机器学习并不难.机器学习的流行原因很简单,在一个消费者(以及广告主)需要更多个性化,而计 ...
- 大数据与机器学习算法相关的电子书分享
大数据与机器学习算法相关的电子书分享 近日,偶然看到一个帖子,上面有一些常用的机器学习常用的电子书下载路径,遂复制到这里,分享给大家,希望可以有你需要的- @ 欢迎关注微信公众号:算法全栈之路心智探奇 ...
- Flink+Alink,当大数据遇见机器学习!
以下内容节选自<Flink实战派>一书! --正文-- 大数据技术和人工智能(机器学习)的结合,使利用数据价值的技术有了新的突破. 在通常情况下,大数据技术与机器学习是互相促进.相依相存的 ...
- 上海浦发银行总行信息科技部大数据专家陈春宝:大数据与机器学习重塑零售银行业务...
人工智能.区块链.容器技术等新兴技术的快速演进和发展,正在不断地推进企业数字化变革.8月10日,由上海市经济和信息化委员会.上海市国有资产监督管理委员会指导,上海市国有资产信息中心.上海市计算机用户协 ...
- 财务大数据比赛有python吗-Python大数据与机器学习之NumPy初体验
本文是Python大数据与机器学习系列文章中的第6篇,将介绍学习Python大数据与机器学习所必须的NumPy库. 通过本文系列文章您将能够学到的知识如下: 应用Python进行大数据与机器学习 应用 ...
- 如何在未来的大数据和机器学习领域,获得一份不错的工作?
2018 年,AI 的发展脚步会加快,这一年将是 AI 技术重生和数据科学得以重新定义的一年.对于雄心勃勃的数据科学家来说,他们如何在与数据科学相关的工作市场中脱颖而出?2018 年会有足够多的数据科 ...
- 机器学习与气象数据_气象大数据与机器学习联合实验室 大数据和气象的“联姻”...
气象大数据与机器学习联合实验室 大数据和气象的"联姻" 来源:<中国科学报> 时间:2017-02-13 13:36:28 作者:沈春蕾 我们每天都在看天气预报,大家会 ...
- 猿宵节正确打开方式:你要的大数据、机器学习、神经网络…已配齐
导读:数据叔听说,程序猿们今晚要通宵了: 但数据叔真心希望,在这个以团圆为关键词的节日里,你能早点下班,跟家人一起过节.光说几句祝福的话好像诚意不够,数据叔再送一本书,愿你在新年开工之际提高姿势水平. ...
最新文章
- 解题报告(二)C、(darkBZOJ 2194) 快速傅立叶之二(FFT、卷积的概念、常用变换)
- python3 线程池 ThreadPoolExecutor 简介
- 阿里产品专家杨文韬:你想了解的1688都在这里
- boost::math模块二项式分布来预测概率 抛硬币时的正面和反面的测试程序
- matlab画孔斯曲面,CAD CAM技术基础:第五讲 孔斯曲面
- 前端学习(1389):多人管理项目9登录功能具体实现
- mysql执行存储过程提示out of_PHP执行MYSQL存储过程报错:Commands out of sync; you can't run...
- PaperWeekly 第十一期
- Python自然语言处理学习笔记(45):5.6 基于转换的标记
- python3.4连接mysql5.7数据库增删改查
- 基于GPIB接口的自动测试系统
- 移动通信基础(4)信道模型
- VS2015 保护视力 背景色设置
- oracle取得组内行号,行号
- php 手写签批 手机办公_好签原笔迹手写签批SDK
- 天猫精灵智能家居对接,及天猫iot官网配置图文讲解(一)
- Ionic3.x 创建项目中的问题-IonIC start myApp tabs
- JMC | 人工智能在药物合成中的当前和未来作用(2)
- 让物体沿椭圆轨道运动
- 试读2-《白话C++ 练功篇》目录
热门文章
- 普中科技MicroPython基于esp32的基础教程-01-基础知识
- 终于刷完PAT乙级练习题
- 西门子1500可编程逻辑控制器语言介绍(1)----CEM语言
- 第一章 GPU虚拟化发展史
- ipv6协议提供的服务器,ipv6地址获取协议
- Risk Management and Financial Institution Chapter 16 —— Basel II.5,Basel III, and Other Post-Crisis
- 运动鞋折扣店如何贴吧引流?运动鞋推广引流加粉怎么做?
- 响铃:吃鸡大战,垄断市场的焦虑和不安
- 华为 SecPath 防火墙 常见flood攻击防范典型配置
- pyecharts x轴字体大小调整_PyEcharts实战指南