- Siêu lớp và danh mục iOS/Objective-C
- object-c - -1001 lỗi khi NSURLSession vượt qua httpproxy và /etc/hosts
- java - Nhận địa chỉ url bằng lớp mạng
- ios - Âm thanh không phát trong thông báo đẩy
bất cứ ai cũng đúng MDSJ Có kinh nghiệm gì không? Đầu vào sau chỉ tạo ra kết quả NaN và tôi không hiểu tại sao. Tài liệu rất thưa thớt.
nhập mdsj.Data;
nhập mdsj.MDSJ;
lớp công khai MDSJDemo {
public static void main(String[] args) {
đầu vào gấp đôi[][] = {
{78,0, 60,0, 30,0, 25,0, 24,0, 7,125, 1600,0, 1,4953271028037383, 15,0, 60,0, 0,0, 0,0, 50,0},
{63.1578947368421, 51.81818181818182, 33.0, 30.0, 10.714285714285715, 6.402877697841727, 794.2857142857143, 0,823045267489712, 15,0, 20,0, 2,8571428571428568, 0,0, 75,0},
{55.714285714285715, 70.0, 16.363636363636363, 27.5, 6.66666666666666, 5.742574257425742, 577.1428571428571, 0,6542056074766355, 12,857142857142856, 10,0, 17,142857142857142, 0,0, 25,0}
};
int n=input[0].length; // số lượng đối tượng dữ liệu
double[][] out=MDSJ.classicalScaling(input); // áp dụng MDS
System.out.println(Data.format(output));
for(int i=0; i
System.out.println(output[0][i]+" "+output[1][i]);
}
}
}
这是输出:
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
NaN NaN
NaN NaN
NaN NaN
NaN NaN
NaN NaN
NaN NaN
NaN NaN
NaN NaN
NaN NaN
NaN NaN
NaN NaN
NaN NaN
NaN NaN
Có lẽ tôi sử dụng MDS không đúng cách. đầu vào
Mỗi mảng con có độ dài 13 nhằm mục đích biểu diễn một đối tượng, nhưng MDSJ trả về 13 điểm.
Đầu vào này cũng không thành công:
đầu vào gấp đôi[][] = {
{3, 4, 3},
{5, 6, 1},
{0, 1, 2}
};
biên tập: Có vẻ như tôi đã sử dụng sai. Tôi đã cung cấp cho nó đầu vào như thế này:
Đối tượng A: {30d, 1d, 0d, 4.32, 234.1}
Đối tượng B: {45d, 3,21, 45, 91,2, 9,9}
Đối tượng C: {7.7, 93.1, 401, 0d, 0d}
Nhưng điều nó thực sự muốn là một ma trận khoảng cách như thế này:
ABC
A 0 3 1
B 3 0 5
C 1 5 0
Nhưng không chính xác, vì đối với đầu vào này:
đầu vào gấp đôi[][] = {
{0, 3, 1},
{3, 0, 5},
{1, 5, 0}
};
Tôi nhận được kết quả này:
0,8713351726043931 -2,361724203891451 2,645016918006963
NaN NaN NaN
0,8713351726043931 NaN
-2.361724203891451 NaN
2.645016918006963 NaN
Nhưng nếu nó yêu cầu một mảng khoảng cách thì mục đích sử dụng MDS ngay từ đầu là gì? Tôi nghĩ mảng thuộc tính nên được rút gọn thành tọa độ.
câu trả lời hay nhất
Chia tỷ lệ đa chiều chuyển đổi khoảng cách thành tọa độ - Nếu bạn đã có tọa độ trong không gian nhiều chiều và muốn chúng được nhúng một cách tối ưu trong không gian ít chiều, Phân tích Thành phần Chính (PCA) có thể là kỹ thuật bạn đang tìm kiếm.
MDS cổ điển và PCA có liên quan chặt chẽ với nhau: thứ nhất, MDS chuyển đổi khoảng cách đầu vào thành tọa độ nhiều chiều sơ bộ (số chiều cao bằng số đối tượng được mô tả thứ hai, bằng cách loại bỏ trục ít quan trọng nhất, tương tự như vậy); PCA bước để giảm tính chiều của các tọa độ này.
Mục đích của việc sử dụng MDS là trong một số cài đặt, khoảng cách đầu vào không đến từ tọa độ hiện tại mà từ những thứ phi hình học khác, chẳng hạn như xếp hạng chênh lệch do mọi người đưa ra.
Ma trận khác nhau 3x3 của bạn không tuân theo bất đẳng thức tam giác bắt buộc trong không gian hệ mét (vì d[1][0]+d[0][2]
Về việc Java MDSJ sản xuất NaN, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/1857338/
任何人都对 MDSJ 有任何经验?以下输入仅产生 NaN 结果,我不明白为什么。文档非常稀少。 import mdsj.Data; import mdsj.MDSJ; public class MDS
Tôi là một lập trình viên xuất sắc, rất giỏi!