zoukankan      html  css  js  c++  java
  • 向量余弦值(Cosine)(C#)

    接前面一篇TF-IDF的代码,用其结果来计算出向量的余弦值的代码

    View Code
    using System;
    using System.Collections.Generic;
    using System.Text;

    namespace Cluster
    {
        
    static class Cosine
        {
            
    /// <summary>
            
    /// 计算向量余弦值
            
    /// </summary>
            
    /// <param name="vector1"></param>
            
    /// <param name="vector2"></param>
            public static double Calculate(Dictionary<intdouble> vector1, Dictionary<intdouble> vector2)
            {
                
    double dotProduct = CalcDotProduct(vector1, vector2);
                
    double length1 = CalcLength(vector1);
                
    double length2 = CalcLength(vector2);
                
    double cosine = dotProduct / (length1 * length2);

                
    return cosine;
            }

            
    /// <summary>
            
    /// 计算向量长度(vector length)
            
    /// </summary>
            
    /// <param name="vector"></param>
            
    /// <returns></returns>
            private static double CalcLength(Dictionary<intdouble> vector)
            {
                
    double length = 0;
                
    foreach (KeyValuePair<intdouble> kvp in vector)
                {
                    length 
    += Math.Pow(kvp.Value, 2);
                }
                
    return Math.Sqrt(length);
            }

            
    /// <summary>
            
    /// 计算向量点积(dot product)/内积(inner product)
            
    /// </summary>
            
    /// <param name="vector1"></param>
            
    /// <param name="vector2"></param>
            
    /// <returns></returns>
            private static double CalcDotProduct(Dictionary<intdouble> vector1, Dictionary<intdouble> vector2)
            {
                
    double dotProduct = 0;
                
    foreach (KeyValuePair<intdouble> kvp in vector1)
                {
                    
    if (vector2.ContainsKey(kvp.Key))
                    {
                        dotProduct 
    += kvp.Value * vector2[kvp.Key];
                    }
                }
                
    return dotProduct;
            }
        }
    }
  • 相关阅读:
    [转]list的交集,差集,并集
    [转]$.post() 和 $.get() 如何同步请求
    [转]Jsoup(一)Jsoup详解(官方)
    [转]Kindeditor图片粘贴上传(chrome)
    [转]kindeditor隐藏上传图片框网络图片或本地上传的功能
    微信公众号平台上传文件返回错误代码:40005 invalid file type
    [转]spring MultipartFile 转 File
    [转]客户端js判断文件类型和文件大小即限制上传大小
    java list排序
    spring security oauth2.0 实现
  • 原文地址:https://www.cnblogs.com/live41/p/2013041.html
Copyright © 2011-2022 走看看