目录摘要一、机器学习概述1.1 DolphinDB ML能力1.2 内置ML函数1.3 适用场景二、回归分析2.1 线性回归2.2 回归预测2.3 多项式回归2.4 回归评估三、分类模型3.1 逻辑回归3.2 分类预测3.3 分类评估四、聚类分析4.1 K-Means聚类4.2 聚类可视化4.3 聚类评估五、时间序列预测5.1 ARIMA模型5.2 时间序列预测5.3 时间序列分解六、特征工程6.1 特征缩放6.2 特征编码6.3 特征选择七、实战案例7.1 设备故障预测7.2 能耗预测八、总结参考资料摘要本文深入讲解DolphinDB内置机器学习函数。从回归分析到分类模型从聚类算法到时间序列预测从特征工程到模型评估全面介绍机器学习函数的核心功能。通过丰富的代码示例帮助读者掌握内置ML能力的核心技能。一、机器学习概述1.1 DolphinDB ML能力DolphinDB ML回归分析线性回归分类模型逻辑回归聚类算法K-Means时间序列ARIMA特点内置函数向量化加速分布式计算1.2 内置ML函数类别函数说明回归ols普通最小二乘回归分类logisticRegression逻辑回归分类聚类kmeansK-Means聚类预测arimaARIMA时间序列预测1.3 适用场景场景说明预测性维护设备故障预测质量控制质量预测分析能耗预测能耗趋势预测异常检测数据异常识别二、回归分析2.1 线性回归//创建数据 n1000x1rand(10.0,n)x2rand(20.0,n)y2*x13*x2rand(-1.0..1.0,n)ttable(x1,x2,y)//线性回归 resultols(y,[x1,x2])//查看结果 result//系数解释//Intercept:截距//x1:x1的系数接近2//x2:x2的系数接近32.2 回归预测//使用回归模型预测//创建新数据 newX1rand(10.0,100)newX2rand(20.0,100)//预测 predictionsresult.Interceptresult.Coefficient[0]*newX1result.Coefficient[1]*newX2//或者使用矩阵运算 newXmatrix([newX1,newX2])predictionsnewX**result.Coefficientresult.Intercept2.3 多项式回归//多项式回归 xrand(10.0,1000)y2*x3*x*xrand(-1.0..1.0,1000)//创建多项式特征 x2x*x//多项式回归 resultols(y,[x,x2])2.4 回归评估//回归评估指标defevaluateRegression(actual,predicted){//R² ssRessum((actual-predicted)^2)ssTotsum((actual-avg(actual))^2)r21-ssRes/ssTot//RMSE rmsesqrt(avg((actual-predicted)^2))//MAE maeavg(abs(actual-predicted))returndict(STRING,DOUBLE,[[R2,r2],[RMSE,rmse],[MAE,mae]])}//使用 predictionsresult.Interceptresult.Coefficient[0]*x1result.Coefficient[1]*x2 evaluateRegression(y,predictions)三、分类模型3.1 逻辑回归//创建分类数据 n1000x1rand(10.0,n)x2rand(10.0,n)yiif(x1x210,1,0)ttable(x1,x2,y)//逻辑回归 resultlogisticRegression(y,[x1,x2])//查看结果 result3.2 分类预测//预测概率 prob1/(1exp(-(result.Interceptresult.Coefficient[0]*x1result.Coefficient[1]*x2)))//预测类别 predictediif(prob0.5,1,0)3.3 分类评估//分类评估指标defevaluateClassification(actual,predicted){//混淆矩阵 tpsum(actual1andpredicted1)tnsum(actual0andpredicted0)fpsum(actual0andpredicted1)fnsum(actual1andpredicted0)//准确率 accuracy(tptn)/(tptnfpfn)//精确率 precisiontp/(tpfp)//召回率 recalltp/(tpfn)//F1分数 f12*precision*recall/(precisionrecall)returndict(STRING,DOUBLE,[[Accuracy,accuracy],[Precision,precision],[Recall,recall],[F1,f1]])}//使用 evaluateClassification(y,predicted)四、聚类分析4.1 K-Means聚类//创建聚类数据 n300x1concat([rand(5.0,100),rand(15.0,100),rand(25.0,100)])x2concat([rand(5.0,100),rand(15.0,100),rand(25.0,100)])//K-Means聚类 resultkmeans(matrix([x1,x2]),3)//查看结果 result//聚类中心 result.centers//聚类标签 result.cluster4.2 聚类可视化//聚类结果 ttable(x1,x2,result.clusterascluster)//查看各簇统计 select cluster,count(*)ascnt,avg(x1)asavg_x1,avg(x2)asavg_x2fromt group by cluster4.3 聚类评估//聚类评估轮廓系数defsilhouetteScore(data,labels){ndata.rows()scoresarray(DOUBLE,n)for(iin0..n){//计算簇内距离 sameClusterlabelslabels[i]aavg(abs(data[sameCluster]-data[i]))//计算最近簇距离 otherClustersunique(labels[labels!labels[i]])bmin(each(def(c){avg(abs(data[labelsc]-data[i]))},otherClusters))scores[i](b-a)/max(a,b)}returnavg(scores)}五、时间序列预测5.1 ARIMA模型//创建时间序列数据 n200ttable(1..nastime,1000.1*(1..n)10*sin(2*pi*(1..n)/12)rand(-5.0..5.0,n)asvalue)//ARIMA预测 resultarima(t.value,1,1,1)//ARIMA(1,1,1)//查看结果 result5.2 时间序列预测//预测未来值 forecastSteps10forecastarimaForecast(result,forecastSteps)//预测结果print(未来string(forecastSteps)期预测值:)print(forecast)5.3 时间序列分解//时间序列分解//趋势移动平均 trendmavg(t.value,12)//季节性去趋势后的周期平均 detrendedt.value-trend seasonalavg(detrended)//简化处理//残差 residualt.value-trend-seasonal//结果 select time,value,trend,seasonal,residualfromt六、特征工程6.1 特征缩放//特征缩放defnormalize(data){return(data-min(data))/(max(data)-min(data))}defstandardize(data){return(data-avg(data))/std(data)}//使用 xrand(100.0,1000)normalize(x)standardize(x)6.2 特征编码//类别编码defoneHotEncode(categories){uniqueValsdistinct(categories)ncategories.size()muniqueVals.size()resultmatrix(INT,n,m,0)for(iin0..n){jwhich(uniqueValscategories[i])result[i,j]1}returnresult}//使用 categoriestake(ABC,100)oneHotEncode(categories)6.3 特征选择//特征选择相关性分析defcorrelationFilter(features,target,threshold0.1){correlationseach(def(f){corr(f,target)},features)returnabs(correlations)threshold}//使用 x1rand(10.0,1000)x2rand(10.0,1000)x3rand(10.0,1000)y2*x1rand(-1.0..1.0,1000)//x1与y相关 correlationFilter([x1,x2,x3],y)//结果[true,false,false]七、实战案例7.1 设备故障预测//设备故障预测//创建设备数据 n10000ttable(1..nasdevice_id,rand(1000.0,n)asvibration,//振动 rand(100.0,n)astemperature,//温度 rand(50.0,n)aspressure,//压力 rand(1000.0,n)asruntime,//运行时间 iif(rand(100.0,n)90,1,0)asfailure//故障标签)//特征 features[t.vibration,t.temperature,t.pressure,t.runtime]//逻辑回归预测 modellogisticRegression(t.failure,features)//预测 prob1/(1exp(-(model.Interceptmodel.Coefficient[0]*t.vibrationmodel.Coefficient[1]*t.temperaturemodel.Coefficient[2]*t.pressuremodel.Coefficient[3]*t.runtime)))predictediif(prob0.5,1,0)//评估 evaluateClassification(t.failure,predicted)7.2 能耗预测//能耗预测//创建能耗数据 n365ttable(2024.01.010..(n-1)asdate,rand(1000.0..2000.0,n)asenergy,rand(10.0..35.0,n)astemperature,rand(0..1,n)asis_workday)//特征温度、是否工作日 features[t.temperature,double(t.is_workday)]//线性回归 modelols(t.energy,features)//预测 predictionsmodel.Interceptmodel.Coefficient[0]*t.temperaturemodel.Coefficient[1]*double(t.is_workday)//评估 evaluateRegression(t.energy,predictions)八、总结本文详细介绍了DolphinDB机器学习函数回归分析线性回归、多项式回归、评估指标分类模型逻辑回归、分类预测、评估指标聚类分析K-Means聚类、聚类评估时间序列ARIMA模型、时间序列预测特征工程特征缩放、特征编码、特征选择实战应用故障预测、能耗预测思考题如何选择合适的机器学习模型如何评估模型性能特征工程有什么重要性参考资料DolphinDB机器学习函数DolphinDB统计分析