精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

詳解 C++ 實(shí)現(xiàn) K-means 算法

開發(fā) 前端
K-means算法是一種非常經(jīng)典的聚類算法,其主要目的是將數(shù)據(jù)點(diǎn)劃分為K個(gè)集群,以使得每個(gè)數(shù)據(jù)點(diǎn)與其所屬集群的中心點(diǎn)(質(zhì)心)的平方距離之和最小。這種算法在數(shù)據(jù)挖掘、圖像處理、模式識(shí)別等領(lǐng)域有著廣泛的應(yīng)用。

一、K-means算法概述

K-means算法是一種非常經(jīng)典的聚類算法,其主要目的是將數(shù)據(jù)點(diǎn)劃分為K個(gè)集群,以使得每個(gè)數(shù)據(jù)點(diǎn)與其所屬集群的中心點(diǎn)(質(zhì)心)的平方距離之和最小。這種算法在數(shù)據(jù)挖掘、圖像處理、模式識(shí)別等領(lǐng)域有著廣泛的應(yīng)用。

二、K-means算法的基本原理

K-means算法的基本原理相對(duì)簡(jiǎn)單直觀。算法接受兩個(gè)輸入?yún)?shù):一是數(shù)據(jù)集,二是用戶指定的集群數(shù)量K。算法的輸出是K個(gè)集群,每個(gè)集群都有其中心點(diǎn)以及屬于該集群的數(shù)據(jù)點(diǎn)。

K-means算法的執(zhí)行過程如下:

  1. 初始化:隨機(jī)選擇K個(gè)點(diǎn)作為初始集群中心(質(zhì)心)。
  2. 分配數(shù)據(jù)點(diǎn)到最近的集群:對(duì)于數(shù)據(jù)集中的每個(gè)點(diǎn),計(jì)算其與各個(gè)質(zhì)心的距離,并將其分配到距離最近的質(zhì)心所對(duì)應(yīng)的集群中。
  3. 重新計(jì)算質(zhì)心:對(duì)于每個(gè)集群,計(jì)算其內(nèi)所有數(shù)據(jù)點(diǎn)的平均值,并將該平均值設(shè)為新的質(zhì)心。
  4. 迭代優(yōu)化:重復(fù)步驟2和3,直到滿足某個(gè)終止條件(如質(zhì)心的變化小于某個(gè)閾值,或者達(dá)到最大迭代次數(shù))。

圖解說明:

圖a表示初始的數(shù)據(jù)集,在圖b中隨機(jī)找到兩個(gè)類別質(zhì)心,接著執(zhí)行上述的步驟二,得到圖c的兩個(gè)集群,但此時(shí)明顯不符合我們的要求,因此需要進(jìn)行步驟三,得到新的類別質(zhì)心(圖d),重復(fù)的進(jìn)行多次迭代(如圖e和f),直到達(dá)到不錯(cuò)的結(jié)果。

三、K-means算法的數(shù)學(xué)表達(dá)

K-means 算法是一種迭代求解的聚類分析算法,其目標(biāo)是將  個(gè)觀測(cè)值劃分為 ()個(gè)聚類,以使得每個(gè)觀測(cè)值屬于離它最近的均值(聚類中心或聚類質(zhì)心)對(duì)應(yīng)的聚類,以作為聚類的標(biāo)準(zhǔn)。

數(shù)學(xué)公式

1.數(shù)據(jù)表示

2.聚類中心

3.目標(biāo)函數(shù)

4.迭代更新

5.算法終止條件

迭代進(jìn)行分配步驟和更新步驟,直到聚類中心不再發(fā)生顯著變化,或者達(dá)到預(yù)設(shè)的最大迭代次數(shù)。

四、K-means算法的C++實(shí)現(xiàn)

首先是頭文件:

#include <iostream>  
#include <vector>  
#include <cmath>  
#include <limits>  
#include <algorithm>

第一步: 數(shù)據(jù)結(jié)構(gòu)定義

我們定義了一個(gè)Point結(jié)構(gòu)體來表示二維空間中的點(diǎn)。

struct Point {
    double x, y;
    Point(double x = 0, double y = 0) : x(x), y(y) {}
};

這個(gè)結(jié)構(gòu)體很簡(jiǎn)單,只有兩個(gè)成員變量x和y,分別表示點(diǎn)在二維空間中的橫坐標(biāo)和縱坐標(biāo)。還有一個(gè)構(gòu)造函數(shù),用于創(chuàng)建點(diǎn)對(duì)象時(shí)初始化坐標(biāo)。

第二步: 輔助函數(shù)

距離計(jì)算函數(shù)

double distance(const Point& a, const Point& b) {
    return std::hypot(a.x - b.x, a.y - b.y);
}

這個(gè)函數(shù)計(jì)算兩個(gè)點(diǎn)之間的距離,使用了<cmath>庫中的std::hypot函數(shù),它接受兩個(gè)參數(shù)(橫坐標(biāo)和縱坐標(biāo)的差值),并返回這兩點(diǎn)之間的歐幾里得距離。

質(zhì)心計(jì)算函數(shù)

Point centroid(const std::vector<Point>& cluster) {
    double sum_x = 0, sum_y = 0;
    for (const auto& point : cluster) {
        sum_x += point.x;
        sum_y += point.y;
    }
    return Point(sum_x / cluster.size(), sum_y / cluster.size());
}

這個(gè)函數(shù)計(jì)算一個(gè)點(diǎn)集的質(zhì)心。質(zhì)心是所有點(diǎn)的坐標(biāo)平均值。函數(shù)遍歷點(diǎn)集,累加所有點(diǎn)的x坐標(biāo)和y坐標(biāo),然后分別除以點(diǎn)的數(shù)量,得到質(zhì)心的坐標(biāo)。

第三步: K-means算法主體

K-means算法的主體部分可以進(jìn)一步拆分為幾個(gè)小的步驟:初始化、分配點(diǎn)、重新計(jì)算質(zhì)心和檢查收斂性。

初始化

在K-means算法中,我們需要首先選擇K個(gè)初始質(zhì)心。在這個(gè)簡(jiǎn)單的實(shí)現(xiàn)中,我們隨機(jī)選擇數(shù)據(jù)集中的K個(gè)點(diǎn)作為初始質(zhì)心。

std::vector<Point> centroids(k);
for (int i = 0; i < k; ++i) {
    centroids[i] = data[rand() % data.size()];
}

分配點(diǎn)

對(duì)于數(shù)據(jù)集中的每個(gè)點(diǎn),我們需要找到最近的質(zhì)心,并將其分配給該質(zhì)心對(duì)應(yīng)的集群。

std::vector<std::vector<Point>> clusters(k);
for (const auto& point : data) {
    double min_distance = std::numeric_limits<double>::max();
    int cluster_index = 0;
    for (int i = 0; i < k; ++i) {
        double dist = distance(point, centroids[i]);
        if (dist < min_distance) {
            min_distance = dist;
            cluster_index = i;
        }
    }
    clusters[cluster_index].push_back(point);
}

重新計(jì)算質(zhì)心

分配完點(diǎn)后,我們需要重新計(jì)算每個(gè)集群的質(zhì)心。

std::vector<Point> new_centroids(k);
for (int i = 0; i < k; ++i) {
    new_centroids[i] = centroid(clusters[i]);
}

檢查收斂性

如果新舊質(zhì)心之間的變化很小(在一個(gè)很小的閾值以內(nèi)),則算法收斂,可以停止迭代。

bool converged = true;
for (int i = 0; i < k; ++i) {
    if (distance(centroids[i], new_centroids[i]) > 1e-6) {
        converged = false;
        break;
    }
}

如果算法未收斂,則更新質(zhì)心并繼續(xù)迭代。

第四步: 主函數(shù)和數(shù)據(jù)準(zhǔn)備

在主函數(shù)中,我們準(zhǔn)備了一個(gè)簡(jiǎn)單的數(shù)據(jù)集(整體代碼見最后),并設(shè)置了K值和最大迭代次數(shù)。然后調(diào)用kmeans函數(shù)進(jìn)行聚類。

這就是K-means算法的一個(gè)基本實(shí)現(xiàn)。在實(shí)際應(yīng)用中,可能還需要考慮更多的優(yōu)化和異常情況處理,比如處理空集群、改進(jìn)初始質(zhì)心的選擇方法、添加對(duì)異常值的魯棒性等。

結(jié)果輸出:

Cluster 1 centroid: (3.5, 3.9)
(1, 0.6) (8, 5) (1, 4) (4, 6) 
Cluster 2 centroid: (5.41667, 9.06667)
(2, 10) (2.5, 8.4) (5, 8) (8, 8) (9, 11) (6, 9)

五、K-means算法的優(yōu)缺點(diǎn)

優(yōu)點(diǎn):

  • 算法簡(jiǎn)單直觀,易于理解和實(shí)現(xiàn)。
  • 對(duì)于大數(shù)據(jù)集,K-means算法是相對(duì)高效的,因?yàn)樗膹?fù)雜度是線性的,即O(n)。
  • 當(dāng)集群之間的區(qū)別明顯且數(shù)據(jù)分布緊湊時(shí),K-means算法表現(xiàn)良好。

缺點(diǎn):

  • 需要預(yù)先指定集群數(shù)量K,這在實(shí)際應(yīng)用中可能是一個(gè)挑戰(zhàn)。
  • 對(duì)初始質(zhì)心的選擇敏感,不同的初始質(zhì)心可能導(dǎo)致完全不同的結(jié)果。
  • 只能發(fā)現(xiàn)球形的集群,對(duì)于非球形或復(fù)雜形狀的集群效果不佳。
  • 對(duì)噪聲和異常值敏感,因?yàn)樗鼈儠?huì)影響質(zhì)心的計(jì)算。

六、源代碼如下

#include <iostream>  
#include <vector>  
#include <cmath>  
#include <limits>  
#include <algorithm>  
  
struct Point {  
    double x, y;  
    Point(double x = 0, double y = 0) : x(x), y(y) {}  
};  
  
double distance(const Point& a, const Point& b) {  
    return std::hypot(a.x - b.x, a.y - b.y);  
}  
  
Point centroid(const std::vector<Point>& cluster) {  
    double sum_x = 0, sum_y = 0;  
    for (const auto& point : cluster) {  
        sum_x += point.x;  
        sum_y += point.y;  
    }  
    return Point(sum_x / cluster.size(), sum_y / cluster.size());  
}  
  
void kmeans(std::vector<Point>& data, int k, int max_iterations) {  
    std::vector<Point> centroids(k);  
    std::vector<std::vector<Point>> clusters(k);  
      
    // 隨機(jī)化第一個(gè)質(zhì)點(diǎn)
    for (int i = 0; i < k; ++i) {  
        centroids[i] = data[rand() % data.size()];  
    }  
      
    for (int iter = 0; iter < max_iterations; ++iter) {   
        for (const auto& point : data) {  
            double min_distance = std::numeric_limits<double>::max();  
            int cluster_index = 0;  
            for (int i = 0; i < k; ++i) {  
                double dist = distance(point, centroids[i]);  
                if (dist < min_distance) {  
                    min_distance = dist;  
                    cluster_index = i;  
                }  
            }  
            clusters[cluster_index].push_back(point);  
        }  
          
        // 清除前一個(gè)的質(zhì)點(diǎn)
        for (auto& cluster : clusters) {  
            cluster.clear();  
        }  
          
        // 重新計(jì)算質(zhì)點(diǎn) 
        for (int i = 0; i < data.size(); ++i) {  
            int cluster_index = 0;  
            double min_distance = std::numeric_limits<double>::max();  
            for (int j = 0; j < k; ++j) {  
                double dist = distance(data[i], centroids[j]);  
                if (dist < min_distance) {  
                    min_distance = dist;  
                    cluster_index = j;  
                }  
            }  
            clusters[cluster_index].push_back(data[i]);  
        }  
          
        std::vector<Point> new_centroids(k);  
        for (int i = 0; i < k; ++i) {  
            new_centroids[i] = centroid(clusters[i]);  
        }  
           
        bool converged = true;  
        for (int i = 0; i < k; ++i) {  
            if (distance(centroids[i], new_centroids[i]) > 1e-6) {  
                converged = false;  
                break;  
            }  
        }  
          
        if (converged) {  
            break;  
        }  
          
        centroids = new_centroids;  
    }  
      
    // 輸出結(jié)果  
    for (int i = 0; i < k; ++i) {  
        std::cout << "Cluster " << i + 1 << " centroid: (" << centroids[i].x << ", " << centroids[i].y << ")" << std::endl;  
        for (const auto& point : clusters[i]) {  
            std::cout << "(" << point.x << ", " << point.y << ") ";  
        }  
        std::cout << std::endl;  
    }  
}  
  
int main() {  
    srand(time(nullptr)); // 隨機(jī)數(shù)種子,可以使用隨機(jī)數(shù)生成數(shù)據(jù)集
      
    std::vector<Point> data = {  
        // 數(shù)據(jù)集 
        {2.0, 10.0}, {2.5, 8.4}, {5.0, 8.0}, {8.0, 8.0}, {1.0, 0.6},  
        {9.0, 11.0}, {8.0, 5.0}, {1.0, 4.0}, {4.0, 6.0}, {6.0, 9.0}  
    };  
      
    int k = 2; // 集群數(shù)量 
    int max_iterations = 5; // 迭代次數(shù)
      
    kmeans(data, k, max_iterations);  
      
    return 0;  
}


責(zé)任編輯:華軒 來源: 鯊魚編程
相關(guān)推薦

2012-08-09 09:57:54

K-means

2017-09-12 16:57:43

機(jī)器學(xué)習(xí)K-means算法Python

2012-05-08 16:29:32

K-meansJava算法

2021-03-03 10:08:40

數(shù)據(jù)算法技術(shù)

2012-06-14 09:46:55

數(shù)據(jù)分析

2018-04-25 08:10:50

算法k-means代碼

2025-05-22 10:06:49

2010-02-04 11:23:25

C++反射機(jī)制

2021-12-21 15:31:10

C++語言指針

2011-04-20 09:50:45

Virtual

2011-04-11 17:08:16

階乘算法C++

2010-02-06 13:42:36

C++單件模式

2010-02-01 14:21:24

C++初始化列表

2010-02-02 11:16:28

C++異常

2023-11-09 23:56:21

2024-01-22 10:49:55

C++for循環(huán)

2010-01-18 16:17:53

C++代碼

2010-02-01 17:02:53

C++產(chǎn)生隨機(jī)數(shù)

2023-12-24 12:56:14

C++函數(shù)語言

2023-10-30 10:29:50

C++最小二乘法
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

五月天婷婷影视| 国产99午夜精品一区二区三区 | 欧洲av一区二区| 欧美激情一区二区三区蜜桃视频| 国产欧美精品在线| 国产一级大片在线观看| 精品在线99| 91精品国模一区二区三区| 成人黄色大片网站| www.在线播放| 国产精品资源网| 欧美一级大片在线免费观看| 欧美人与禽zoz0善交| 国产精品videossex| 午夜免费久久看| 亚洲精品美女久久7777777| xxxx国产精品| 日韩制服丝袜先锋影音| 精品中文字幕视频| 永久免费观看片现看| 成人免费直播在线| 色哟哟精品丝袜一区二区| 亚洲国产精品麻豆| 亚洲欧洲在线一区| 亚洲色大成网站www| 精品午夜久久福利影院| 青青精品视频播放| 精品无码av在线| 日韩一区二区三区免费播放| 日韩电影第一页| 三级av免费看| 国产成人毛片| 色女孩综合影院| 日本熟妇人妻xxxx| 黄色网址视频在线观看| 久久久久国产成人精品亚洲午夜| 国产精品一区二区欧美| 国产精品永久久久久久久久久| 免费日韩av片| 91av在线免费观看视频| 激情四射综合网| 婷婷丁香综合| 一级做a爰片久久毛片美女图片| 99精品一区二区三区无码吞精| 95精品视频| 欧美日韩国产综合一区二区三区| aa在线免费观看| 成人福利影视| 亚洲一区在线观看视频| 男人的天堂视频在线| 午夜小视频在线| 日本一区二区综合亚洲| 日本在线观看一区二区三区| 日本a一级在线免费播放| 成人动漫av在线| 国产乱码精品一区二区三区中文| av小说天堂网| 国产精品77777竹菊影视小说| 国产乱肥老妇国产一区二 | 久久婷婷av| 97免费视频在线播放| 国产第100页| 亚洲区一区二| 69**夜色精品国产69乱| 免费看日韩毛片| 亚洲制服av| 国产91色在线| 进去里视频在线观看| 日韩国产欧美在线视频| 国产精品一区二区久久精品 | 捆绑紧缚一区二区三区视频| 国产精品影片在线观看| 亚洲一区二区三区高清视频| 加勒比av一区二区| 亚洲最大av在线| 亚洲国产精品欧美久久| 成人精品视频一区二区三区 | 97久久夜色精品国产| 久久久国产一区二区| 91精品国产高清一区二区三蜜臀| 欧美国产免费| 88xx成人精品| 日韩xxx视频| 国产一本一道久久香蕉| 97人人做人人人难人人做| 日本韩国免费观看| 国产午夜精品一区二区| 国产精品亚洲天堂| 2021天堂中文幕一二区在线观| 精品久久久久久电影| www日韩在线观看| 日韩欧乱色一区二区三区在线| 日韩欧美国产一区在线观看| 少妇户外露出[11p]| 国产伦一区二区三区| 久久九九全国免费精品观看| 动漫精品一区一码二码三码四码| 久久精品日韩欧美| 91亚洲一区精品| 性猛交xxxx| 国产精品高清亚洲| www插插插无码免费视频网站| 老色鬼在线视频| 欧美精品在线观看播放| 一区二区在线免费观看视频| 免费一区二区| 久久91精品国产| 亚洲 国产 日韩 欧美| 国产毛片精品一区| 欧美激情第一页在线观看| 黄色成人在线| 色综合天天综合网天天看片| 欧美国产在线一区| 国产在线观看91一区二区三区| 久久久av电影| 啪啪小视频网站| 北条麻妃国产九九精品视频| 永久免费精品视频网站| 午夜影院一区| 欧美成人一级视频| 四虎影视1304t| 男女精品网站| 成人蜜桃视频| 黄色片网站在线| 欧美中文一区二区三区| 香蕉视频污视频| 91精品国产福利在线观看麻豆| 97香蕉久久超级碰碰高清版| www.日韩在线观看| 国产精品成人免费在线| 日本成人在线免费视频| 精品资源在线| 欧美激情一区二区三区久久久| 在线观看中文字幕av| 久久综合五月天婷婷伊人| 精品久久久久久无码中文野结衣| 成人亚洲精品| 精品国产一区久久久| 精品久久久久久久久久久国产字幕 | 亚洲三级电影网站| 五月婷婷丁香色| 精品国产一区二区三区| 欧洲s码亚洲m码精品一区| 欧美 日韩 国产 成人 在线 91| 亚洲男同1069视频| xx欧美撒尿嘘撒尿xx| 国产一区三区在线播放| 国产国语刺激对白av不卡| 欧美日韩国产综合视频| 疯狂欧美牲乱大交777| 扒开伸进免费视频| 亚洲东热激情| 精品国产乱码久久久久久久软件| 国产精品偷拍| 亚洲国产天堂网精品网站| 精品亚洲永久免费| 成人性视频免费网站| 女人帮男人橹视频播放| 波多野结衣欧美| 欧美激情女人20p| 韩国av电影在线观看| 亚洲国产毛片aaaaa无费看 | 欧美精品国产白浆久久久久| 97在线视频国产| 四虎在线视频| 欧美性生交xxxxx久久久| 在线免费观看成年人视频| 久久久久久久波多野高潮日日| 日本成人三级电影网站| 中韩乱幕日产无线码一区| 中文字幕综合一区| 国产又粗又猛又黄又爽无遮挡| 亚洲视频免费观看| 91人人澡人人爽| 日韩午夜精品| 日韩精品一线二线三线| 中文字幕日韩亚洲| 久久免费精品视频| 人成免费电影一二三区在线观看| 欧洲精品视频在线观看| 91狠狠综合久久久| 岛国一区二区在线观看| 成年人免费在线播放| 日韩激情在线| 99在线视频免费观看| 老牛影视精品| 日韩视频中文字幕| 国产 日韩 欧美 精品| 色婷婷综合视频在线观看| 国产无遮挡在线观看| 岛国精品一区二区| 欧美精品一区二区三区免费播放| 99久久亚洲精品蜜臀| 国产日韩精品一区观看| 素人啪啪色综合| 欧美黄色片在线观看| 天天综合天天综合| 欧美日韩高清影院| 国产成人无码一区二区三区在线| 国产欧美日本一区二区三区| gogo亚洲国模私拍人体| 丝袜国产日韩另类美女| 成年人视频大全| 精品成人影院| 国产精品久久亚洲| 欧美黑粗硬大| 2020欧美日韩在线视频| 成人看av片| 亚洲视频一区二区| 亚洲免费国产视频| 欧美巨大另类极品videosbest| 亚洲国产成人精品激情在线| 综合在线观看色| 少妇精品一区二区三区| 国产 欧美在线| 中文字幕线观看| 石原莉奈在线亚洲三区| 免费 成 人 黄 色| 欧美日韩影院| 亚洲最新免费视频| 亚洲欧美日本伦理| 国产视频精品网| 欧美特黄不卡| 成人午夜小视频| 欧美日韩五区| 日本午夜精品理论片a级appf发布| 日本在线观看高清完整版| 久久精品久久久久久国产 免费| 青青草观看免费视频在线| 亚洲成人a级网| 亚洲精品成av人片天堂无码| 91麻豆精品国产91久久久久久| 中文天堂在线视频| 在线观看网站黄不卡| 日日骚av一区二区| 精品国产1区2区| 国产成人愉拍精品久久 | 最新国产精品亚洲| 黄色大片在线免费观看| 亚洲另类图片色| 日本一二三区在线视频| 日韩高清有码在线| 亚洲 欧美 自拍偷拍| 亚洲激情在线观看视频免费| 免费av网站观看| 亚洲国模精品一区| 亚洲免费成人在线| 日韩欧美精品在线视频| 99热这里只有精品5| 欧美群妇大交群中文字幕| 亚洲视频中文字幕在线观看| 欧美性xxxx极品hd满灌| 久久久精品视频免费观看| 日韩一区欧美小说| 亚洲欧美日韩第一页| 国产伦精品一区二区三区免费| 日韩在线一区视频| 久久99久久精品| 在线不卡一区二区三区| 国产精品一区二区无线| 亚洲精品一二三四| 久久国产精品99久久人人澡| 欧美国产日韩另类| 天堂а√在线资源在线| 欧美日韩中文精品| 一级黄色免费片| 欧美日韩国产电影| 国产一区二区麻豆| 日韩视频免费直播| 国产xxxx孕妇| 日韩精品一区二区三区中文精品| 人妻一区二区三区免费| 亚洲国产精品yw在线观看 | 国产午夜手机精彩视频| 亚洲欧洲成人av每日更新| 精品日韩在线视频| 《视频一区视频二区| 日本中文字幕免费在线观看| 最新久久zyz资源站| 国产网友自拍视频| 欧美日韩国产精品一区二区三区四区 | 日本www在线播放| 免费视频久久| 日本中文字幕片| 精品一二三四区| 免费看91视频| av动漫一区二区| 国产精品久久久久久成人| 亚洲欧洲一区二区三区| 成年人网站在线观看视频| 亚洲一区二区三区四区五区黄| www.国产成人| 欧美午夜在线观看| 丰满岳乱妇国产精品一区| 国产视频精品免费播放| 黄色影院在线播放| 欧美巨乳在线观看| 中文在线аv在线| 国产精品海角社区在线观看| 亚洲高清在线一区| 国产乱码精品一区二区三区日韩精品| 成人看片爽爽爽| 黄频视频在线观看| 亚洲承认在线| aaa毛片在线观看| 国产精品自拍在线| 免费成人深夜夜行p站| 国产欧美日韩另类一区| 日韩少妇裸体做爰视频| 欧美色综合网站| 天天操天天干天天爱| 色偷偷91综合久久噜噜| 538在线观看| 114国产精品久久免费观看| 亚洲警察之高压线| 国产树林野战在线播放| 日本色综合中文字幕| 欧美丰满熟妇bbb久久久| 国产天堂亚洲国产碰碰| 国产成人在线播放视频| 51久久夜色精品国产麻豆| 天堂在线中文| 午夜精品一区二区三区在线播放| 女生影院久久| 国产精品9999久久久久仙踪林| 国产精品精品国产一区二区| www.av中文字幕| 国产黑丝在线一区二区三区| 登山的目的在线| 欧美中文字幕一区二区三区亚洲| 欧洲亚洲精品视频| 欧美黄色片视频| 国产999精品在线观看| 亚洲日本无吗高清不卡| 午夜在线视频观看日韩17c| 91精产国品一二三| 亚洲精选视频在线| 亚洲怡红院av| 色婷婷综合久久久久中文字幕1| 永久免费毛片在线播放| 国产v亚洲v天堂无码| 欧美日韩1区| 手机在线国产视频| 国产精品拍天天在线| 中文字幕av免费观看| 国产偷亚洲偷欧美偷精品| 欧美xxxx性xxxxx高清| 国产精品久久久久久av下载红粉| 一道本一区二区三区| av之家在线观看| 成人久久18免费网站麻豆| 国产又黄又爽又无遮挡| 欧美日韩一区二区在线视频| 日韩免费网站| 国产精品视频专区| 国产精品久久久久9999赢消| 亚洲精品20p| 国产精品久久久久久妇女6080| 91禁在线观看| 久久精品国产一区二区电影| www.26天天久久天堂| 日韩三级电影免费观看| 另类综合日韩欧美亚洲| 日本成人免费在线观看| 91国在线观看| 免费黄色电影在线观看| 国产专区欧美专区| 欧美黄色aaaa| 日本性生活一级片| 亚洲欧美国产三级| 神马午夜精品95| 国模吧一区二区三区| 亚洲精品播放| 亚洲无吗一区二区三区| 亚洲国产成人午夜在线一区| 一级做a爱片久久毛片| 久久天堂电影网| 精品深夜福利视频| 亚洲精品无码国产| 99在线精品一区二区三区| 蜜臀尤物一区二区三区直播| 尤物99国产成人精品视频| 国产成人精品亚洲日本在线观看| 四虎永久国产精品| 精彩视频一区二区三区| 日韩av综合在线| 亚洲视频一区二区三区| 亚洲国产伊人| 日韩亚洲欧美视频| 久久中文字幕电影| 国产高清在线观看视频| 性色av一区二区三区免费| 成人精品中文字幕| 国产精品久久久久野外| 亚洲自拍偷拍麻豆| 黑人与亚洲人色ⅹvideos| 国产一区欧美二区三区| 亚洲伊人网站| 久久久99999| 亚洲人成欧美中文字幕|