精品欧美一区二区三区在线观看 _久久久久国色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)

天天插天天干天天操| 亚洲白虎美女被爆操| 亚洲网站在线观看| 三年中国中文在线观看免费播放 | 国产永久免费视频| 美国十次av导航亚洲入口| 日韩成人一区二区| 亚洲精品成a人在线观看| 老汉色影院首页| 在线观看免费视频一区| 中文字幕精品影院| 亚洲一二三四在线观看| 99re资源| 欧美极品视频在线观看| 国产精久久久| 自拍偷在线精品自拍偷无码专区| 国产精品久久久久久影视| 9.1成人看片| av在线最新| 66视频精品| 欧美日本在线播放| 日韩欧美视频一区二区三区四区| 香蕉污视频在线观看| 亚洲裸色大胆大尺寸艺术写真| 欧美日韩国产片| 日韩激情免费视频| 日韩专区一区二区| 欧美亚洲三区| 亚洲日本中文字幕| 天天干天天综合| av电影在线观看| 精品一区二区三区香蕉蜜桃| 日韩性生活视频| 狠狠干狠狠操视频| 最新黄网在线观看| 成人一二三区视频| 人妖精品videosex性欧美| 蜜桃av免费看| 老司机精品视频网| 日韩一区欧美一区| 视频一区二区三区免费观看| 亚洲一区在线观| 国产农村妇女精品一二区| 亚洲日本欧美中文幕| 欧美日韩人妻精品一区在线| 亚洲欧美一区二区三区| 国产午夜亚洲精品羞羞网站| 国产在线日韩在线| 久艹视频在线观看| 天天综合网网欲色| 欧美精品一区二| 潘金莲一级淫片aaaaa| 美女av在线免费看| 欧美激情一区三区| 懂色中文一区二区三区在线视频 | 日韩欧美1区| 欧美日韩国产系列| 久久久久国产一区| 国产精品一品| 国产三级一区二区| 日本一区二区不卡高清更新| 国产又粗又黄又爽的视频| 蜜臀精品久久久久久蜜臀| 久久成人亚洲精品| 日本一区二区三区网站| 偷拍一区二区| 日韩一二三四区| 青青在线视频免费| 性国产高清在线观看| 久久久综合精品| 日产精品久久久一区二区福利| 国产又粗又长又硬| 欧美激情网址| 欧美一区二区三区喷汁尤物| 熟女性饥渴一区二区三区| 爆操欧美美女| 日本一区二区高清| 久久av一区二区三区漫画| 97免费观看视频| 国产精品一区亚洲| 日韩av电影在线免费播放| 一级黄色小视频| 丁香天五香天堂综合| 久久久水蜜桃| 亚洲成人影院麻豆| 久久美女高清视频 | 欧美另类综合| 亚洲人午夜色婷婷| 女性裸体视频网站| 日韩极品在线| 亚洲视频视频在线| 中文字幕五月天| 三级电影一区| 欧美日韩福利在线观看| 丁香六月激情综合| 欧美午夜在线视频| 国产mv久久久| a天堂在线视频| 久色婷婷小香蕉久久| 国产成人在线精品| 日本高清不卡码| 亚洲人人精品| 欧美激情区在线播放| 久草网站在线观看| 午夜欧美精品久久久久久久| 日韩在线观看av| 尤物精品国产第一福利三区 | 国产精品久久久久久久久久妞妞| 国产精品av电影| 成人小说亚洲一区二区三区 | 91精品啪在线观看国产| 国产欧美日韩一区二区三区四区| 亚洲精品国产精品自产a区红杏吧| mm131丰满少妇人体欣赏图| 日韩高清成人在线| 裸体女人亚洲精品一区| 国产一级淫片a视频免费观看| 国产一区二区电影| 成人在线激情视频| 国产女18毛片多18精品| 美女任你摸久久| 久久精品ww人人做人人爽| 国产在线高清理伦片a| ㊣最新国产の精品bt伙计久久| 国产a级片网站| 超碰在线网站| 欧美一区二区三区视频在线| 91资源在线播放| 日韩精品免费一区二区三区| 欧美激情喷水视频| 国产超碰人人模人人爽人人添| 国产网站一区二区| 黄色a级片免费| 欧美三级电影在线| 91精品国产电影| 一级片免费在线播放| 欧美a一区二区| 国产精品自产拍高潮在线观看| 一级黄色a毛片| 久久久亚洲精品石原莉奈| 成人毛片视频网站| 99蜜月精品久久91| 日韩一区二区三区视频在线观看| 亚洲AV无码国产成人久久| 国产模特精品视频久久久久| 国产三区二区一区久久| 国产高清视频免费最新在线| 日韩美女视频一区二区 | 亚洲精品少妇网址| b站大片免费直播| 国产欧美一级| 蜜桃传媒一区二区| 成人在线免费看片| 欧美色窝79yyyycom| 91精品人妻一区二区三区四区| 日韩精品免费一区二区在线观看| 国产精品久久久久久av福利软件| 国产乱淫片视频| 国产精品狼人久久影院观看方式| 中文字幕の友人北条麻妃| 爱看av在线| 亚洲国产欧美一区二区三区同亚洲| 久久网一区二区| 免费黄网站欧美| 亚洲人成网站在线播放2019| av中文字幕在线看| 亚洲精品久久7777777| 久久国产精品免费看| 激情图片小说一区| 久久精品人人做人人爽电影| 成人免费网站观看| 欧美日韩二区三区| 欧美在线视频第一页| 国产精品综合在线视频| 欧美日韩精品一区| xxxx另类黑人| 亚洲日韩中文字幕在线播放| 亚洲视频一区二区三区四区| 亚洲精品ww久久久久久p站| 999精品网站| 激情亚洲另类图片区小说区| 欧美激情啊啊啊| 日本私人网站在线观看| 欧美日韩专区在线| 久久婷婷一区二区| 国产女主播视频一区二区| 亚洲欧美日韩网站| 日韩精品永久网址| www.久久爱.cn| **在线精品| 韩国精品主播一区二区在线观看| 欧美一区二区三区日韩视频| 日本中文字幕在线免费观看| 久久99国产精品尤物| 99久久久精品视频| 国产一区二区三区| 91精品国产成人| 欧美边添边摸边做边爱免费| 色国产精品一区在线观看| 男人操女人下面视频| 日韩片欧美片| 国产精品美女诱惑| 丁香高清在线观看完整电影视频| 亚洲开心激情网| 亚洲免费在线观看av| 国产精品麻豆欧美日韩ww| 亚洲婷婷在线观看| 精品一区二区三区欧美| 欧美色图另类小说| 欧美88av| 亚洲一区二区三区午夜| 婷婷亚洲精品| 99在线首页视频| 欧美男男gaygay1069| 日韩在线卡一卡二| 欧美另类网站| 韩国女主播一区二区三区| 色综合久久精品亚洲国产| 美女毛片在线看| 欧日韩精品视频| 黄大色黄女片18免费| 成人av免费在线播放| 黄网站欧美内射| 久久久久97| 91午夜理伦私人影院| 日本性爱视频在线观看| 在线免费观看羞羞视频一区二区| 午夜视频1000| 色素色在线综合| 亚洲精品无码国产| 日本午夜精品视频| 国产成人亚洲综合a∨婷婷图片| 一区二区三区四区视频在线| 一区三区在线欧| 国产欧美日韩综合精品二区| 久久9999免费视频| 国模视频一区二区| 欧性猛交ⅹxxx乱大交| 欧美日韩在线视频一区| 国产精品99精品无码视亚| 九色|91porny| 中文字幕免费高清在线| 美女久久久精品| 在线免费观看视频黄| 日韩av网站在线观看| 亚洲少妇第一页| 永久91嫩草亚洲精品人人| 加勒比在线一区二区三区观看| 欧美日韩免费看片| 热久久99这里有精品| 久久uomeier| 欧美成人全部免费| 三级无遮挡在线观看| 日韩的一区二区| 97精品人妻一区二区三区| 欧美日韩国产系列| av网站在线免费看| 欧美不卡一区二区三区四区| 最近中文在线观看| 亚洲高清一区二区三区| 91狠狠综合久久久久久| 国产精品美女久久久久久久网站| 四虎国产精品成人免费入口| 亚洲国产精品黑人久久久| 四虎永久免费地址| 久久免费国产精品| 成人免费无遮挡无码黄漫视频| 国产无遮挡一区二区三区毛片日本| 国产精品成人在线视频| 91在线国产福利| 亚洲精品中文字幕乱码无线| 国产乱子轮精品视频| 精品国产av色一区二区深夜久久| 精品一区二区三区视频| 色偷偷中文字幕| 成人av电影在线网| 国产又黄又粗视频| 亚洲精品一二三| 成年人视频软件| 亚洲日本在线天堂| 亚洲欧美日韩第一页| 亚洲色图.com| 黄色一级片免费在线观看| 一区二区高清视频在线观看| 亚洲一区电影在线观看| 亚洲国产视频网站| 免费在线不卡av| 欧美videos大乳护士334| 飘雪影院手机免费高清版在线观看 | av一区二区三区在线| 中文字幕第22页| 不卡的av在线| 羞羞在线观看视频| 欧美日韩国内自拍| 国产精品久久久久久久久久久久久久久久| 精品日韩99亚洲| www.亚洲.com| 在线观看国产欧美| 国精产品一区一区三区mba下载| 日韩av男人的天堂| 欧洲大片精品免费永久看nba| 国产色视频一区| 看全色黄大色大片免费久久久| 亚洲福利av| 久久精品国产亚洲夜色av网站| 日韩欧美手机在线| 激情文学一区| 日本xxxxxxxxxx75| 精品在线一区二区| 色欲av无码一区二区三区| 亚洲综合免费观看高清完整版| 日韩久久久久久久久久| 日韩电视剧在线观看免费网站| 91精选在线| 成人免费视频在线观看超级碰| 亚洲视频分类| 加勒比成人在线| 国产乱人伦精品一区二区在线观看| 亚洲国产av一区| 色综合一区二区| 国产精品51麻豆cm传媒| 亚洲精品国产欧美| 波多野结衣精品| 成人资源视频网站免费| 亚洲国产精品日韩专区av有中文| 无人在线观看的免费高清视频| 99久久久精品| 国产在线视频在线观看| 欧美日韩性视频| 国产成人手机在线| 欧美乱妇高清无乱码| 国产欧美日韩电影| 异国色恋浪漫潭| 久久99久久精品欧美| 中文天堂资源在线| 欧美中文字幕亚洲一区二区va在线| 日本韩国一区| 欧洲成人午夜免费大片| 香蕉久久夜色精品国产使用方法 | 免费99视频| 国产一区二区三区的电影| 国产麻豆xxxvideo实拍| 婷婷开心激情综合| 波多野结衣在线观看视频| 亚洲精品一区av在线播放| 麻豆蜜桃在线观看| 久久另类ts人妖一区二区| 国产欧美三级| av男人的天堂av| 精品视频1区2区| 老司机精品视频在线观看6| 成人写真视频福利网| 欧美日本二区| 亚洲香蕉中文网| 欧美视频中文字幕在线| 免费成人av电影| 国产狼人综合免费视频| 99久久视频| 91精品国产高清91久久久久久| 夜夜夜精品看看| 少妇激情av一区二区| 国产成人一区二区| 亚洲精品久久久| 91人妻一区二区| 国产精品久久毛片av大全日韩| 中文字幕在线观看1| 亚洲精品按摩视频| 久久uomeier| 中文字幕制服丝袜在线| 丰满白嫩尤物一区二区| 狂野欧美性猛交| 欧美一级日韩一级| av在线视屏| 亚洲国产高清国产精品| 国产一二三精品| 国产精品111| 一区二区三区视频免费| 精品一区二区三区中文字幕| 国产免费黄色小视频| 国产无人区一区二区三区| 99精品人妻无码专区在线视频区| 欧美精品福利在线| 精品国产麻豆| 欧美深夜福利视频| 国产精品视频一二三区| 亚洲男人天堂久久| 国产成人精品在线观看| 午夜精品毛片| 成人h动漫精品一区| 911精品国产一区二区在线| 飘雪影视在线观看免费观看 | 亚洲中文字幕在线一区| 久久久久久久久久久av| 欧美色女视频| 国产中文字幕在线免费观看| 国产精品色婷婷久久58| 人妻精品一区二区三区| 成人黄色免费在线观看| 免费视频一区| 久久精品久久国产|