(Xs,Ys,Xt,Yt,intra_align="coral",dist="euclidean",lp="linear")
| 72 | return source_class_center, Dct |
| 73 | |
| 74 | def EasyTL(Xs,Ys,Xt,Yt,intra_align="coral",dist="euclidean",lp="linear"): |
| 75 | # Inputs: |
| 76 | # Xs : source data, ns * m |
| 77 | # Ys : source label, ns * 1 |
| 78 | # Xt : target data, nt * m |
| 79 | # Yt : target label, nt * 1 |
| 80 | # The following inputs are not necessary |
| 81 | # intra_align : intra-domain alignment: coral(default)|gfk|pca|raw |
| 82 | # dist : distance: Euclidean(default)|ma(Mahalanobis)|cosine|rbf |
| 83 | # lp : linear(default)|binary |
| 84 | |
| 85 | # Outputs: |
| 86 | # acc : final accuracy |
| 87 | # y_pred : predictions for target domain |
| 88 | |
| 89 | # Reference: |
| 90 | # Jindong Wang, Yiqiang Chen, Han Yu, Meiyu Huang, Qiang Yang. |
| 91 | # Easy Transfer Learning By Exploiting Intra-domain Structures. |
| 92 | # IEEE International Conference on Multimedia & Expo (ICME) 2019. |
| 93 | |
| 94 | C = len(np.unique(Ys)) |
| 95 | if C > np.max(Ys): |
| 96 | Ys += 1 |
| 97 | Yt += 1 |
| 98 | |
| 99 | m = len(Yt) |
| 100 | |
| 101 | if intra_align == "raw": |
| 102 | print('EasyTL using raw feature...') |
| 103 | elif intra_align == "pca": |
| 104 | print('EasyTL using PCA...') |
| 105 | print('Not implemented yet, using raw feature') |
| 106 | #Xs, Xt = PCA_map(Xs, Xt) |
| 107 | elif intra_align == "gfk": |
| 108 | print('EasyTL using GFK...') |
| 109 | print('Not implemented yet, using raw feature') |
| 110 | #Xs, Xt = GFK_map(Xs, Xt) |
| 111 | elif intra_align == "coral": |
| 112 | print('EasyTL using CORAL...') |
| 113 | Xs = CORAL_map(Xs, Xt) |
| 114 | |
| 115 | _, Dct = get_class_center(Xs,Ys,Xt,dist) |
| 116 | print('Start intra-domain programming...') |
| 117 | Mcj = label_prop(C,m,Dct,lp) |
| 118 | y_pred = np.argmax(Mcj, axis=1) + 1 |
| 119 | acc = np.mean(y_pred == Yt.flatten()); |
| 120 | |
| 121 | return acc, y_pred |
| 122 |
no test coverage detected