一、瑞典汽车保险数据集
瑞典汽车保险数据集( Swedish Auto Insurance Dataset)包含了对所有索赔要求的总赔付预测,以千瑞典克朗计,给定的条件是索赔要求总数。
这是一个回归问题。它由 63 个观察值组成,包括1个输入变量和1个输出变量。变量名分别是:
1.1 输入变量:
-
1.2 输出变量:
-
1.3 一般性能
预测平均值的基准性能的均方根误差(RMSE)约为 72.251 千克朗。
1.4 数据集
数据集:archive.zip
二、葡萄酒质量数据集
葡萄酒质量数据集(Wine Quality Dataset )涉及根据每种葡萄酒的化学度量值来预测白葡萄酒的质量。
它是一个多类分类问题,但也可以定义为回归问题。每个类的观察值数量不均等。一共有 4898个观察值,11个输入变量和一个输出变量。变量名如下:2.1 输入变量:
非挥发性酸度
- 挥发性酸度
- 柠檬酸
- 残留糖
- 氯化物
- 游离二氧化硫
- 总二氧化硫
- 浓度
- pH值
- 硫酸盐
-
2.2 输出变量:
-
2.3 一般性能
预测平均值的基准性能的均方根误差(RMSE)为 0.148 的质量分数。
2.4 数据集
数据集:archive.zip
三、比马印第安人糖尿病数据集
比马印第安人糖尿病数据集(Pima Indians Diabetes Dataset)涉及根据医疗记录预测比马印第安人5年内糖尿病的发病情况。
它是一个二元分类问题。每个类的观察值数量不均等。一共有 768 个观察值,8个输入变量和1个输出变量。缺失值通常用零值编码。变量名如下:3.1 输入变量:
怀孕次数
- 口服葡萄糖耐受试验中,2小时的血浆葡萄糖浓度。
- 舒张压(mm Hg)
- 三头肌皮肤褶层厚度(mm)
- 2小时血清胰岛素含量(μU/ ml)
- 体重指数(体重,kg /(身高,m)^ 2)
- 糖尿病家族史
-
3.2 输出变量:
-
3.3 一般性能
预测最普遍类的基准性能是约 65% 的分类准确率,最佳结果达到约 77% 的分类准确率。
3.4 数据集
数据集:archive.zip
四、声纳数据集
声纳数据集(Sonar Dataset )涉及预测根据给定声纳从不同角度返回的强度预测目标物体是岩石还是矿井。
它是一个二元分类问题。每个类的观察值数量不均等。一共有208个观察值,60个输入变量和1个输出变量。变量名如下:4.1 输入变量:
-
4.2 输出变量:
-
4.3 一般性能
预测最普遍类的基准性能是约 53% 的分类准确率,最佳结果达到约 88% 的分类准确率。
4.4 数据集
数据集:sonar.csv
五、钞票数据集
钞票数据集(Banknote Dataset)涉及根据给定钞票的数个度量的照片预测是真钞还是假钞。
它是一个二元分类问题。每个类的观测值数量不均等。一共有 1372 个观察值,4个输入变量和1个输出变量。变量名如下:5.1 输入变量:
小波变换图像(连续)
- 小波偏斜变换图像(连续)
- 小波峰度变换图像(连续)
-
5.2 输出变量:
-
5.3 一般性能
5.4 数据集
数据集:archive.zip
六、鸢尾花数据集
鸢尾花卉数据集(Iris Flowers Dataset )涉及根据鸢尾花的测量数据预测花卉品种。
它是一个多类分类问题。每个类的观察值数量是均等的。一共有 150 个观察值,4个输入变量和1个输出变量。变量名如下:6.1 输入变量:
萼片长度(cm)
- 萼片宽度(cm)
- 花瓣长度(cm)
-
6.2 输出变量:
类(Iris Setosa,Iris Versicolour,Iris Virginica)
6.3 一般性能
6.4 数据集
数据集:archive.zip
七、鲍鱼数据集
鲍鱼数据集(Abalone Dataset)涉及根据鲍鱼个体的测量数据来预测鲍鱼的年龄(环的数量)。
它是一个多类分类(multi-class classification)问题,但也可以作为回归问题。每个类的观察值数量不均等。该数据集有 4177 个观察值,8个输入变量和1个输出变量。 变量名如下:7.1 输入变量:
性别(M,F,I)
- 长度
- 直径
- 高度
- 总重量
- 剥壳重量
- 内脏重量
-
7.2 输出变量:
-
7.3 一般性能
预测最普遍类的基准性能是约 16% 的分类准确率,预测平均值的基准性能的均方根误差(RMSE)是约 3.2 个环。
7.4 数据集
数据集:archive.zip
八、电离层数据集
电离层数据集(Ionosphere Dataset)需要根据给定的电离层中的自由电子的雷达回波预测大气结构。
它是一个二元分类问题。每个类的观察值数量不均等,一共有 351 个观察值,34 个输入变量和1个输出变量。变量名如下:8.1 输入变量:
-
8.2 输出变量:
-
8.3 一般性能
预测最普遍类的基准性能是约 64% 的分类准确率,最佳结果达到约 94% 的分类准确率。
8.4 数据集
数据集:archive.zip
九、小麦种子数据集
小麦种子数据集(Wheat Seeds Dataset)涉及对不同品种的小麦种子进行预测,给定的是种子的计量数据。
它是一个二元分类问题。每个类的观察值是均等的,一共 210 个观察值,7个输入变量和1个输出变量。变量名如下:9.1 输入变量:
区域
- 周长
- 压实度
- 籽粒长度
- 籽粒宽度
- 不对称系数
-
9.2 输出变量:
-
9.3 一般性能
9.4 数据集
数据集:archive.zip
十、瑞典汽车保险数据集
波士顿房价数据集(Boston House Price Dataset)包含对房价的预测,以千美元计,给定的条件是房屋及其相邻房屋的详细信息。
该数据集是一个回归问题。每个类的观察值数量是均等的,共有 506 个观察,13 个输入变量和1个输出变量。变量名如下:10.1 输入变量
CRIM:城镇人均犯罪率。
- ZN:住宅用地超过 25000 sq.ft. 的比例。
- INDUS:城镇非零售商用土地的比例。
- CHAS:查理斯河空变量(如果边界是河流,则为1;否则为0)。
- NOX:一氧化氮浓度。
- RM:住宅平均房间数。
- AGE:1940 年之前建成的自用房屋比例。
- DIS:到波士顿五个中心区域的加权距离。
- RAD:辐射性公路的接近指数。
- TAX:每 10000 美元的全值财产税率。
- PTRATIO:城镇师生比例。
- B:1000(Bk-0.63)^ 2,其中 Bk 指代城镇中黑人的比例。
-
10.2 输出变量
10.3 一般性能
预测平均值的基准性能的均方根误差(RMSE)是约 9.21 千美元。
10.4 数据集
数据集:archive.zip
十一、MATLAB分类实例
BankNote_Authentication.csv ```matlab %{ Created on 19:22 2020/1/23 @author: XinWang Song This code is created toclassify dataset with many methods. And these results will be used to illustrate the effiencies of these methods. %} clear; clc; summaryTable = readtable(‘C:\Users\25626\Desktop\BankNote_Authentication.csv’); summaryData = table2array(summaryTable); dataZero = summaryData(1:762, 1:4); labelZero = summaryData(1:762, 5); dataOne = summaryData(763:1372, 1:4); labelOne = summaryData(763:1372, 5); dataTrain = [dataZero(1:650, :); dataOne(1:550, :)]; labelTrain = [labelZero(1:650); labelOne(1:550)]; dataTest = [dataZero(651:end, :); dataOne(551:end, :)]; labelTest = [labelZero(651:end); labelOne(551:end)]; list = {‘MEDA’, ‘MIDA’, ‘TCA’, ‘SA’, ‘TJM’}; [indx, tf] = listdlg(‘ListString’, list); switch indx case 1
%----------MEDA------
options.d = 2; %two important parameters to improve the classification, the first one
options.rho = 1.0;
options.p = 10;
options.lambda = 10.0;
options.eta = 0.05; %the second one
options.T = 10;
[Acc,~,~,~] = MEDA(dataTrain, labelTrain+1, dataTest, labelTest+1, options);
f = msgbox(['the accuracy is', num2str(Acc)], 'acc');
case 2
%-----------MIDA---------
summaryData = [dataTrain; dataTest];
summaryLabel = [labelTrain+1; labelTest+1];
[m, n] = size(summaryData);
X = summaryData; %the first parameter
boundary = size(dataTrain, 1);
maSrc(1:boundary) = true; maSrc(boundary+1:m) = false; %the second parameter
domainFt(:, 1) = maSrc';
domainFt(:, 2) = ~(maSrc');
cvObj.training = maSrc';cvObj.test = ~cvObj.training';
param = []; param.kerName = 'lin';param.kerSigma = 1e-1;param.bSup = 0;
param.mu = 1;param.m = 2;param.gamma = 1;
[Xproj,transMdl] = ftTrans_mida(X,domainFt,summaryLabel(maSrc),maSrc',param);
acc = doPredict(Xproj,summaryLabel,cvObj);
draw1(Xproj,summaryLabel,domainFt,{'z_1','z_2'},'MIDA',acc)
f = msgbox(['the accuracy is', num2str(acc)], 'acc');
case 3
%---------------TCA------------
summaryData = [dataTrain; dataTest];
summaryLabel = [labelTrain+1; labelTest+1];
[m, n] = size(summaryData);
X = summaryData;%第一个参数
boundary = size(dataTrain, 1);
maSrc(1:boundary) = true; maSrc(boundary+1:m) = false; %第二个参数
maLabeled(1:m) = true;
param = []; param.kerName = 'lin';param.bSstca = 0;
param.mu = 1;param.m = 2;param.gamma = 0.1;param.lambda = 0;
[Xproj,transMdl] = ftTrans_tca(X,maSrc',summaryLabel(maSrc),maSrc', param);
cvObj.training = maSrc';cvObj.test = ~cvObj.training';
acc = doPredict(Xproj(:,1:2),summaryLabel,cvObj);
f = msgbox(['the accuracy is', num2str(acc)], 'acc');
case 4
%---------------SA--------------
summaryData = [dataTrain; dataTest];
summaryLabel = [labelTrain+1; labelTest+1];
[m, n] = size(summaryData);
X = summaryData;%第一个参数
boundary = size(dataTrain, 1);
maSrc(1:boundary) = true; maSrc(boundary+1:m) = false; %第二个参数
domainFt(:, 1) = maSrc';
domainFt(:, 2) = ~(maSrc');
cvObj.training = maSrc';cvObj.test = ~cvObj.training';
param = []; param.pcaCoef = 2;
[Xproj,transMdl] = ftTrans_sa(X,maSrc',summaryLabel(maSrc),maSrc',param);
acc = doPredict(Xproj,summaryLabel,cvObj);
draw1(Xproj,summaryLabel,domainFt,{'z_1','z_2'},'SA',acc);
f = msgbox(['the accuracy is', num2str(acc)], 'acc');
case 5
%-----TJM------
options.dim = 3; %two important parameters to improve the classification, the first one
options.kernel_type = 'linear';
options.lambda = 15;
options.T = 10;
options.gamma = [];
[Acc,~,~] = MyTJM(dataTrain, labelTrain+1, dataTest, labelTest+1, options);
f = msgbox(['the accuracy is', num2str(Acc)], 'acc');
otherwise end
function [acc,acc_list,A] = MyTJM(X_src,Y_src,X_tar,Y_tar,options) % This is the implementation of Transfer Joint Matching. % Reference: Mingsheng Long. Transfer Joing Matching for visual domain adaptation. CVPR 2014.
% Inputs: %%% X_src : source feature matrix, ns n_feature %%% Y_src : source label vector, ns 1 %%% X_tar : target feature matrix, nt n_feature %%% Y_tar : target label vector, nt 1 %%% options : option struct %%%%% lambda : regularization parameter %%%%% dim : dimension after adaptation, dim <= n_feature %%%%% kernel_tpye : kernel name, choose from ‘primal’ | ‘linear’ | ‘rbf’ %%%%% gamma : bandwidth for rbf kernel, can be missed for other kernels %%%%% T : n_iterations, T >= 1. T <= 10 is suffice
% Outputs: %%% acc : final accuracy using knn, float %%% acc_list : list of all accuracies during iterations %%% A : final adaptation matrix, (ns + nt) * (ns + nt)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Set options
lambda = options.lambda; %% lambda for the regularization
dim = options.dim; %% dim is the dimension after adaptation, dim <= m
kernel_type = options.kernel_type; %% kernel_type is the kernel name, primal|linear|rbf
gamma = options.gamma; %% gamma is the bandwidth of rbf kernel
T = options.T; %% iteration number
fprintf('TJM: dim=%d lambda=%f\n',dim,lambda);
% Set predefined variables
X = [X_src',X_tar'];
X = X*diag(sparse(1./sqrt(sum(X.^2))));
ns = size(X_src,1);
nt = size(X_tar,1);
n = ns+nt;
% Construct kernel matrix
K = kernel_tjm(kernel_type,X,[],gamma);
% Construct centering matrix
H = eye(n)-1/(n)*ones(n,n);
% Construct MMD matrix
e = [1/ns*ones(ns,1);-1/nt*ones(nt,1)];
C = length(unique(Y_src));
M = e*e' * C;
Cls = [];
% Transfer Joint Matching: JTM
G = speye(n);
acc_list = [];
for t = 1:T
%%% Mc [If want to add conditional distribution]
N = 0;
if ~isempty(Cls) && length(Cls)==nt
for c = reshape(unique(Y_src),1,C)
e = zeros(n,1);
e(Y_src==c) = 1 / length(find(Y_src==c));
e(ns+find(Cls==c)) = -1 / length(find(Cls==c));
e(isinf(e)) = 0;
N = N + e*e';
end
end
M = M + N;
M = M/norm(M,'fro');
[A,~] = eigs(K*M*K'+lambda*G,K*H*K',dim,'SM');
% [A,~] = eigs(X*M*X'+lambda*G,X*H*X',k,'SM');
G(1:ns,1:ns) = diag(sparse(1./(sqrt(sum(A(1:ns,:).^2,2)+eps))));
Z = A'*K;
Z = Z*diag(sparse(1./sqrt(sum(Z.^2))));
Zs = Z(:,1:ns)';
Zt = Z(:,ns+1:n)';
knn_model = fitcknn(Zs,Y_src,'NumNeighbors',1);
Cls = knn_model.predict(Zt);
acc = sum(Cls==Y_tar)/nt;
acc_list = [acc_list;acc(1)];
fprintf('[%d] acc=%f\n',t,full(acc(1)));
end
fprintf('Algorithm JTM terminated!!!\n\n');
end
% With Fast Computation of the RBF kernel matrix % To speed up the computation, we exploit a decomposition of the Euclidean distance (norm) % % Inputs: % ker: ‘linear’,’rbf’,’sam’ % X: data matrix (features * samples) % gamma: bandwidth of the RBF/SAM kernel % Output: % K: kernel matrix
function K = kernel_tjm(ker,X,X2,gamma)
switch ker
case 'linear'
if isempty(X2)
K = X'*X;
else
K = X'*X2;
end
case 'rbf'
n1sq = sum(X.^2,1);
n1 = size(X,2);
if isempty(X2)
D = (ones(n1,1)*n1sq)' + ones(n1,1)*n1sq -2*X'*X;
else
n2sq = sum(X2.^2,1);
n2 = size(X2,2);
D = (ones(n2,1)*n1sq)' + ones(n1,1)*n2sq -2*X'*X2;
end
K = exp(-gamma*D);
case 'sam'
if isempty(X2)
D = X'*X;
else
D = X'*X2;
end
K = exp(-gamma*acos(D).^2);
otherwise
error(['Unsupported kernel ' ker])
end
end ```